lernen 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +15 -0
  3. data/README.md +534 -48
  4. data/Rakefile +26 -7
  5. data/Steepfile +14 -0
  6. data/examples/ripper_prism.rb +63 -0
  7. data/examples/uri_parse_regexp.rb +73 -0
  8. data/lib/lernen/algorithm/cex_processor/acex.rb +43 -0
  9. data/lib/lernen/algorithm/cex_processor/prefix_transformer_acex.rb +43 -0
  10. data/lib/lernen/algorithm/cex_processor.rb +115 -0
  11. data/lib/lernen/algorithm/kearns_vazirani/discrimination_tree.rb +207 -0
  12. data/lib/lernen/algorithm/kearns_vazirani/kearns_vazirani_learner.rb +100 -0
  13. data/lib/lernen/algorithm/kearns_vazirani.rb +44 -0
  14. data/lib/lernen/algorithm/kearns_vazirani_vpa/discrimination_tree_vpa.rb +246 -0
  15. data/lib/lernen/algorithm/kearns_vazirani_vpa/kearns_vazirani_vpa_learner.rb +89 -0
  16. data/lib/lernen/algorithm/kearns_vazirani_vpa.rb +35 -0
  17. data/lib/lernen/algorithm/learner.rb +82 -0
  18. data/lib/lernen/algorithm/lsharp/lsharp_learner.rb +367 -0
  19. data/lib/lernen/algorithm/lsharp/observation_tree.rb +115 -0
  20. data/lib/lernen/algorithm/lsharp.rb +43 -0
  21. data/lib/lernen/algorithm/lstar/lstar_learner.rb +49 -0
  22. data/lib/lernen/algorithm/lstar/observation_table.rb +214 -0
  23. data/lib/lernen/algorithm/lstar.rb +49 -0
  24. data/lib/lernen/algorithm/procedural/atr_manager.rb +200 -0
  25. data/lib/lernen/algorithm/procedural/procedural_learner.rb +223 -0
  26. data/lib/lernen/algorithm/procedural/procedural_sul.rb +47 -0
  27. data/lib/lernen/algorithm/procedural/return_indices_acex.rb +58 -0
  28. data/lib/lernen/algorithm/procedural.rb +57 -0
  29. data/lib/lernen/algorithm.rb +19 -0
  30. data/lib/lernen/automaton/dfa.rb +204 -0
  31. data/lib/lernen/automaton/mealy.rb +108 -0
  32. data/lib/lernen/automaton/moore.rb +122 -0
  33. data/lib/lernen/automaton/moore_like.rb +83 -0
  34. data/lib/lernen/automaton/proc_util.rb +93 -0
  35. data/lib/lernen/automaton/spa.rb +368 -0
  36. data/lib/lernen/automaton/transition_system.rb +209 -0
  37. data/lib/lernen/automaton/vpa.rb +300 -0
  38. data/lib/lernen/automaton.rb +19 -493
  39. data/lib/lernen/equiv/combined_oracle.rb +57 -0
  40. data/lib/lernen/equiv/exhaustive_search_oracle.rb +60 -0
  41. data/lib/lernen/equiv/moore_like_simulator_oracle.rb +36 -0
  42. data/lib/lernen/equiv/oracle.rb +109 -0
  43. data/lib/lernen/equiv/random_walk_oracle.rb +69 -0
  44. data/lib/lernen/equiv/random_well_matched_word_oracle.rb +139 -0
  45. data/lib/lernen/equiv/random_word_oracle.rb +71 -0
  46. data/lib/lernen/equiv/spa_simulator_oracle.rb +39 -0
  47. data/lib/lernen/equiv/test_words_oracle.rb +42 -0
  48. data/lib/lernen/equiv/transition_system_simulator_oracle.rb +36 -0
  49. data/lib/lernen/equiv/vpa_simulator_oracle.rb +48 -0
  50. data/lib/lernen/equiv.rb +25 -0
  51. data/lib/lernen/graph.rb +215 -0
  52. data/lib/lernen/system/block_sul.rb +41 -0
  53. data/lib/lernen/system/moore_like_simulator.rb +45 -0
  54. data/lib/lernen/system/moore_like_sul.rb +33 -0
  55. data/lib/lernen/system/sul.rb +126 -0
  56. data/lib/lernen/system/transition_system_simulator.rb +40 -0
  57. data/lib/lernen/system.rb +72 -0
  58. data/lib/lernen/version.rb +2 -1
  59. data/lib/lernen.rb +284 -34
  60. data/rbs_collection.lock.yaml +16 -0
  61. data/rbs_collection.yaml +14 -0
  62. data/renovate.json +6 -0
  63. data/sig/generated/lernen/algorithm/cex_processor/acex.rbs +30 -0
  64. data/sig/generated/lernen/algorithm/cex_processor/prefix_transformer_acex.rbs +27 -0
  65. data/sig/generated/lernen/algorithm/cex_processor.rbs +59 -0
  66. data/sig/generated/lernen/algorithm/kearns_vazirani/discrimination_tree.rbs +68 -0
  67. data/sig/generated/lernen/algorithm/kearns_vazirani/kearns_vazirani_learner.rbs +51 -0
  68. data/sig/generated/lernen/algorithm/kearns_vazirani.rbs +32 -0
  69. data/sig/generated/lernen/algorithm/kearns_vazirani_vpa/discrimination_tree_vpa.rbs +73 -0
  70. data/sig/generated/lernen/algorithm/kearns_vazirani_vpa/kearns_vazirani_vpa_learner.rbs +51 -0
  71. data/sig/generated/lernen/algorithm/kearns_vazirani_vpa.rbs +20 -0
  72. data/sig/generated/lernen/algorithm/learner.rbs +53 -0
  73. data/sig/generated/lernen/algorithm/lsharp/lsharp_learner.rbs +103 -0
  74. data/sig/generated/lernen/algorithm/lsharp/observation_tree.rbs +53 -0
  75. data/sig/generated/lernen/algorithm/lsharp.rbs +38 -0
  76. data/sig/generated/lernen/algorithm/lstar/lstar_learner.rbs +38 -0
  77. data/sig/generated/lernen/algorithm/lstar/observation_table.rbs +79 -0
  78. data/sig/generated/lernen/algorithm/lstar.rbs +37 -0
  79. data/sig/generated/lernen/algorithm/procedural/atr_manager.rbs +80 -0
  80. data/sig/generated/lernen/algorithm/procedural/procedural_learner.rbs +79 -0
  81. data/sig/generated/lernen/algorithm/procedural/procedural_sul.rbs +36 -0
  82. data/sig/generated/lernen/algorithm/procedural/return_indices_acex.rbs +33 -0
  83. data/sig/generated/lernen/algorithm/procedural.rbs +27 -0
  84. data/sig/generated/lernen/algorithm.rbs +10 -0
  85. data/sig/generated/lernen/automaton/dfa.rbs +93 -0
  86. data/sig/generated/lernen/automaton/mealy.rbs +61 -0
  87. data/sig/generated/lernen/automaton/moore.rbs +69 -0
  88. data/sig/generated/lernen/automaton/moore_like.rbs +63 -0
  89. data/sig/generated/lernen/automaton/proc_util.rbs +38 -0
  90. data/sig/generated/lernen/automaton/spa.rbs +125 -0
  91. data/sig/generated/lernen/automaton/transition_system.rbs +108 -0
  92. data/sig/generated/lernen/automaton/vpa.rbs +109 -0
  93. data/sig/generated/lernen/automaton.rbs +15 -0
  94. data/sig/generated/lernen/equiv/combined_oracle.rbs +27 -0
  95. data/sig/generated/lernen/equiv/exhaustive_search_oracle.rbs +38 -0
  96. data/sig/generated/lernen/equiv/moore_like_simulator_oracle.rbs +27 -0
  97. data/sig/generated/lernen/equiv/oracle.rbs +75 -0
  98. data/sig/generated/lernen/equiv/random_walk_oracle.rbs +41 -0
  99. data/sig/generated/lernen/equiv/random_well_matched_word_oracle.rbs +70 -0
  100. data/sig/generated/lernen/equiv/random_word_oracle.rbs +45 -0
  101. data/sig/generated/lernen/equiv/spa_simulator_oracle.rbs +30 -0
  102. data/sig/generated/lernen/equiv/test_words_oracle.rbs +20 -0
  103. data/sig/generated/lernen/equiv/transition_system_simulator_oracle.rbs +27 -0
  104. data/sig/generated/lernen/equiv/vpa_simulator_oracle.rbs +33 -0
  105. data/sig/generated/lernen/equiv.rbs +11 -0
  106. data/sig/generated/lernen/graph.rbs +80 -0
  107. data/sig/generated/lernen/system/block_sul.rbs +29 -0
  108. data/sig/generated/lernen/system/moore_like_simulator.rbs +31 -0
  109. data/sig/generated/lernen/system/moore_like_sul.rbs +28 -0
  110. data/sig/generated/lernen/system/sul.rbs +87 -0
  111. data/sig/generated/lernen/system/transition_system_simulator.rbs +28 -0
  112. data/sig/generated/lernen/system.rbs +62 -0
  113. data/sig/generated/lernen/version.rbs +6 -0
  114. data/sig/generated/lernen.rbs +214 -0
  115. data/sig-test/generated/test/example_test.rbs +14 -0
  116. data/sig-test/generated/test/lernen/algorithm/kearns_vazirani_test.rbs +16 -0
  117. data/sig-test/generated/test/lernen/algorithm/kearns_vazirani_vpa_test.rbs +10 -0
  118. data/sig-test/generated/test/lernen/algorithm/lsharp_test.rbs +16 -0
  119. data/sig-test/generated/test/lernen/algorithm/lstar_test.rbs +16 -0
  120. data/sig-test/generated/test/lernen/algorithm/procedural_test.rbs +10 -0
  121. data/sig-test/generated/test/lernen/automaton/dfa_test.rbs +19 -0
  122. data/sig-test/generated/test/lernen/automaton/mealy_test.rbs +19 -0
  123. data/sig-test/generated/test/lernen/automaton/moore_test.rbs +19 -0
  124. data/sig-test/generated/test/lernen/automaton/proc_util_test.rbs +19 -0
  125. data/sig-test/generated/test/lernen/automaton/spa_test.rbs +19 -0
  126. data/sig-test/generated/test/lernen/automaton/vpa_test.rbs +19 -0
  127. data/sig-test/generated/test/lernen/equiv/exhaustive_search_oracle_test.rbs +10 -0
  128. data/sig-test/generated/test/lernen/equiv/random_walk_oracle_test.rbs +10 -0
  129. data/sig-test/generated/test/lernen/equiv/random_word_oracle_test.rbs +10 -0
  130. data/sig-test/generated/test/lernen/system/block_sul_test.rbs +16 -0
  131. data/sig-test/generated/test/lernen/system/moore_like_simulator_test.rbs +16 -0
  132. data/sig-test/generated/test/lernen/system/transition_system_simulator_test.rbs +13 -0
  133. data/sig-test/generated/test/lernen/system_test.rbs +11 -0
  134. data/sig-test/generated/test/lernen_test.rbs +13 -0
  135. metadata +131 -11
  136. data/.yardopts +0 -3
  137. data/lib/lernen/cex_processor.rb +0 -92
  138. data/lib/lernen/kearns_vazirani.rb +0 -310
  139. data/lib/lernen/lsharp.rb +0 -344
  140. data/lib/lernen/lstar.rb +0 -170
  141. data/lib/lernen/oracle.rb +0 -119
  142. data/lib/lernen/sul.rb +0 -210
@@ -0,0 +1,19 @@
1
+ # Generated from test/lernen/automaton/dfa_test.rb with RBS::Inline
2
+
3
+ module Lernen
4
+ module Automaton
5
+ class DFATest < Minitest::Test
6
+ # : () -> Lernen::Automaton::DFA[String]
7
+ def self.mod4_dfa: () -> Lernen::Automaton::DFA[String]
8
+
9
+ # : () -> void
10
+ def test_run: () -> void
11
+
12
+ # : () -> void
13
+ def test_to_mermaid: () -> void
14
+
15
+ # : () -> void
16
+ def test_to_dot: () -> void
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # Generated from test/lernen/automaton/mealy_test.rb with RBS::Inline
2
+
3
+ module Lernen
4
+ module Automaton
5
+ class MealyTest < Minitest::Test
6
+ # : () -> Lernen::Automaton::Mealy[String, Integer]
7
+ def self.mod4_mealy: () -> Lernen::Automaton::Mealy[String, Integer]
8
+
9
+ # : () -> void
10
+ def test_run: () -> void
11
+
12
+ # : () -> void
13
+ def test_to_mermaid: () -> void
14
+
15
+ # : () -> void
16
+ def test_to_dot: () -> void
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # Generated from test/lernen/automaton/moore_test.rb with RBS::Inline
2
+
3
+ module Lernen
4
+ module Automaton
5
+ class MooreTest < Minitest::Test
6
+ # : () -> Lernen::Automaton::Moore[String, Integer]
7
+ def self.mod4_moore: () -> Lernen::Automaton::Moore[String, Integer]
8
+
9
+ # : () -> void
10
+ def test_run: () -> void
11
+
12
+ # : () -> void
13
+ def test_to_mermaid: () -> void
14
+
15
+ # : () -> void
16
+ def test_to_dot: () -> void
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # Generated from test/lernen/automaton/proc_util_test.rb with RBS::Inline
2
+
3
+ module Lernen
4
+ module Automaton
5
+ class ProcUtilTest < Minitest::Test
6
+ # : () -> void
7
+ def test_expand: () -> void
8
+
9
+ # : () -> void
10
+ def test_project: () -> void
11
+
12
+ # : () -> void
13
+ def test_find_call_index: () -> void
14
+
15
+ # : () -> void
16
+ def test_find_return_index: () -> void
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # Generated from test/lernen/automaton/spa_test.rb with RBS::Inline
2
+
3
+ module Lernen
4
+ module Automaton
5
+ class SPATest < Minitest::Test
6
+ # : () -> Lernen::Automaton::SPA[String, Symbol, Symbol]
7
+ def self.palindrome_spa: () -> Lernen::Automaton::SPA[String, Symbol, Symbol]
8
+
9
+ # : () -> void
10
+ def test_run: () -> void
11
+
12
+ # : () -> void
13
+ def test_to_mermaid: () -> void
14
+
15
+ # : () -> void
16
+ def test_to_dot: () -> void
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # Generated from test/lernen/automaton/vpa_test.rb with RBS::Inline
2
+
3
+ module Lernen
4
+ module Automaton
5
+ class VPATest < Minitest::Test
6
+ # : () -> Lernen::Automaton::VPA[String, String, String]
7
+ def self.dyck_vpa: () -> Lernen::Automaton::VPA[String, String, String]
8
+
9
+ # : () -> void
10
+ def test_run: () -> void
11
+
12
+ # : () -> void
13
+ def test_to_mermaid: () -> void
14
+
15
+ # : () -> void
16
+ def test_to_dot: () -> void
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,10 @@
1
+ # Generated from test/lernen/equiv/exhaustive_search_oracle_test.rb with RBS::Inline
2
+
3
+ module Lernen
4
+ module Equiv
5
+ class ExhaustiveSearchOracleTest < Minitest::Test
6
+ # : () -> void
7
+ def test_find_cex_and_stats: () -> void
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # Generated from test/lernen/equiv/random_walk_oracle_test.rb with RBS::Inline
2
+
3
+ module Lernen
4
+ module Equiv
5
+ class RandomWalkOracleTest < Minitest::Test
6
+ # : () -> void
7
+ def test_find_cex: () -> void
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # Generated from test/lernen/equiv/random_word_oracle_test.rb with RBS::Inline
2
+
3
+ module Lernen
4
+ module Equiv
5
+ class RandomWordOracleTest < Minitest::Test
6
+ # : () -> void
7
+ def test_find_cex: () -> void
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,16 @@
1
+ # Generated from test/lernen/system/block_sul_test.rb with RBS::Inline
2
+
3
+ module Lernen
4
+ module System
5
+ class BlockSULTest < Minitest::Test
6
+ # : () -> void
7
+ def test_step: () -> void
8
+
9
+ # : () -> void
10
+ def test_query_and_stats: () -> void
11
+
12
+ # : () -> void
13
+ def test_query_empty: () -> void
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ # Generated from test/lernen/system/moore_like_simulator_test.rb with RBS::Inline
2
+
3
+ module Lernen
4
+ module System
5
+ class MooreLikeSimulatorTest < Minitest::Test
6
+ # : () -> void
7
+ def test_step: () -> void
8
+
9
+ # : () -> void
10
+ def test_query_and_stats: () -> void
11
+
12
+ # : () -> void
13
+ def test_query_empty: () -> void
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ # Generated from test/lernen/system/transition_system_simulator_test.rb with RBS::Inline
2
+
3
+ module Lernen
4
+ module System
5
+ class TransitionSystemSimulatorTest < Minitest::Test
6
+ # : () -> void
7
+ def test_step: () -> void
8
+
9
+ # : () -> void
10
+ def test_query_and_stats: () -> void
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ # Generated from test/lernen/system_test.rb with RBS::Inline
2
+
3
+ module Lernen
4
+ class SystemTest < Minitest::Test
5
+ # : () -> void
6
+ def test_from_block: () -> void
7
+
8
+ # : () -> void
9
+ def test_from_automaton: () -> void
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ # Generated from test/lernen_test.rb with RBS::Inline
2
+
3
+ class LernenTest < Minitest::Test
4
+ N: ::Integer
5
+
6
+ ORACLE: :random_word
7
+
8
+ ORACLE_PARAMS: Hash[Symbol, Integer]
9
+
10
+ VPA_ORACLE_PARAMS: Hash[Symbol, Integer]
11
+
12
+ TEST_CASES: Array[[ Lernen::algorithm_name, Hash[Symbol, Symbol] ]]
13
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lernen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TSUYUSATO Kitsune
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-08-31 00:00:00.000000000 Z
11
+ date: 2024-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: set
@@ -33,20 +33,140 @@ extra_rdoc_files: []
33
33
  files:
34
34
  - ".editorconfig"
35
35
  - ".rubocop.yml"
36
- - ".yardopts"
37
36
  - CODE_OF_CONDUCT.md
38
37
  - LICENSE.txt
39
38
  - README.md
40
39
  - Rakefile
40
+ - Steepfile
41
+ - examples/ripper_prism.rb
42
+ - examples/uri_parse_regexp.rb
41
43
  - lib/lernen.rb
44
+ - lib/lernen/algorithm.rb
45
+ - lib/lernen/algorithm/cex_processor.rb
46
+ - lib/lernen/algorithm/cex_processor/acex.rb
47
+ - lib/lernen/algorithm/cex_processor/prefix_transformer_acex.rb
48
+ - lib/lernen/algorithm/kearns_vazirani.rb
49
+ - lib/lernen/algorithm/kearns_vazirani/discrimination_tree.rb
50
+ - lib/lernen/algorithm/kearns_vazirani/kearns_vazirani_learner.rb
51
+ - lib/lernen/algorithm/kearns_vazirani_vpa.rb
52
+ - lib/lernen/algorithm/kearns_vazirani_vpa/discrimination_tree_vpa.rb
53
+ - lib/lernen/algorithm/kearns_vazirani_vpa/kearns_vazirani_vpa_learner.rb
54
+ - lib/lernen/algorithm/learner.rb
55
+ - lib/lernen/algorithm/lsharp.rb
56
+ - lib/lernen/algorithm/lsharp/lsharp_learner.rb
57
+ - lib/lernen/algorithm/lsharp/observation_tree.rb
58
+ - lib/lernen/algorithm/lstar.rb
59
+ - lib/lernen/algorithm/lstar/lstar_learner.rb
60
+ - lib/lernen/algorithm/lstar/observation_table.rb
61
+ - lib/lernen/algorithm/procedural.rb
62
+ - lib/lernen/algorithm/procedural/atr_manager.rb
63
+ - lib/lernen/algorithm/procedural/procedural_learner.rb
64
+ - lib/lernen/algorithm/procedural/procedural_sul.rb
65
+ - lib/lernen/algorithm/procedural/return_indices_acex.rb
42
66
  - lib/lernen/automaton.rb
43
- - lib/lernen/cex_processor.rb
44
- - lib/lernen/kearns_vazirani.rb
45
- - lib/lernen/lsharp.rb
46
- - lib/lernen/lstar.rb
47
- - lib/lernen/oracle.rb
48
- - lib/lernen/sul.rb
67
+ - lib/lernen/automaton/dfa.rb
68
+ - lib/lernen/automaton/mealy.rb
69
+ - lib/lernen/automaton/moore.rb
70
+ - lib/lernen/automaton/moore_like.rb
71
+ - lib/lernen/automaton/proc_util.rb
72
+ - lib/lernen/automaton/spa.rb
73
+ - lib/lernen/automaton/transition_system.rb
74
+ - lib/lernen/automaton/vpa.rb
75
+ - lib/lernen/equiv.rb
76
+ - lib/lernen/equiv/combined_oracle.rb
77
+ - lib/lernen/equiv/exhaustive_search_oracle.rb
78
+ - lib/lernen/equiv/moore_like_simulator_oracle.rb
79
+ - lib/lernen/equiv/oracle.rb
80
+ - lib/lernen/equiv/random_walk_oracle.rb
81
+ - lib/lernen/equiv/random_well_matched_word_oracle.rb
82
+ - lib/lernen/equiv/random_word_oracle.rb
83
+ - lib/lernen/equiv/spa_simulator_oracle.rb
84
+ - lib/lernen/equiv/test_words_oracle.rb
85
+ - lib/lernen/equiv/transition_system_simulator_oracle.rb
86
+ - lib/lernen/equiv/vpa_simulator_oracle.rb
87
+ - lib/lernen/graph.rb
88
+ - lib/lernen/system.rb
89
+ - lib/lernen/system/block_sul.rb
90
+ - lib/lernen/system/moore_like_simulator.rb
91
+ - lib/lernen/system/moore_like_sul.rb
92
+ - lib/lernen/system/sul.rb
93
+ - lib/lernen/system/transition_system_simulator.rb
49
94
  - lib/lernen/version.rb
95
+ - rbs_collection.lock.yaml
96
+ - rbs_collection.yaml
97
+ - renovate.json
98
+ - sig-test/generated/test/example_test.rbs
99
+ - sig-test/generated/test/lernen/algorithm/kearns_vazirani_test.rbs
100
+ - sig-test/generated/test/lernen/algorithm/kearns_vazirani_vpa_test.rbs
101
+ - sig-test/generated/test/lernen/algorithm/lsharp_test.rbs
102
+ - sig-test/generated/test/lernen/algorithm/lstar_test.rbs
103
+ - sig-test/generated/test/lernen/algorithm/procedural_test.rbs
104
+ - sig-test/generated/test/lernen/automaton/dfa_test.rbs
105
+ - sig-test/generated/test/lernen/automaton/mealy_test.rbs
106
+ - sig-test/generated/test/lernen/automaton/moore_test.rbs
107
+ - sig-test/generated/test/lernen/automaton/proc_util_test.rbs
108
+ - sig-test/generated/test/lernen/automaton/spa_test.rbs
109
+ - sig-test/generated/test/lernen/automaton/vpa_test.rbs
110
+ - sig-test/generated/test/lernen/equiv/exhaustive_search_oracle_test.rbs
111
+ - sig-test/generated/test/lernen/equiv/random_walk_oracle_test.rbs
112
+ - sig-test/generated/test/lernen/equiv/random_word_oracle_test.rbs
113
+ - sig-test/generated/test/lernen/system/block_sul_test.rbs
114
+ - sig-test/generated/test/lernen/system/moore_like_simulator_test.rbs
115
+ - sig-test/generated/test/lernen/system/transition_system_simulator_test.rbs
116
+ - sig-test/generated/test/lernen/system_test.rbs
117
+ - sig-test/generated/test/lernen_test.rbs
118
+ - sig/generated/lernen.rbs
119
+ - sig/generated/lernen/algorithm.rbs
120
+ - sig/generated/lernen/algorithm/cex_processor.rbs
121
+ - sig/generated/lernen/algorithm/cex_processor/acex.rbs
122
+ - sig/generated/lernen/algorithm/cex_processor/prefix_transformer_acex.rbs
123
+ - sig/generated/lernen/algorithm/kearns_vazirani.rbs
124
+ - sig/generated/lernen/algorithm/kearns_vazirani/discrimination_tree.rbs
125
+ - sig/generated/lernen/algorithm/kearns_vazirani/kearns_vazirani_learner.rbs
126
+ - sig/generated/lernen/algorithm/kearns_vazirani_vpa.rbs
127
+ - sig/generated/lernen/algorithm/kearns_vazirani_vpa/discrimination_tree_vpa.rbs
128
+ - sig/generated/lernen/algorithm/kearns_vazirani_vpa/kearns_vazirani_vpa_learner.rbs
129
+ - sig/generated/lernen/algorithm/learner.rbs
130
+ - sig/generated/lernen/algorithm/lsharp.rbs
131
+ - sig/generated/lernen/algorithm/lsharp/lsharp_learner.rbs
132
+ - sig/generated/lernen/algorithm/lsharp/observation_tree.rbs
133
+ - sig/generated/lernen/algorithm/lstar.rbs
134
+ - sig/generated/lernen/algorithm/lstar/lstar_learner.rbs
135
+ - sig/generated/lernen/algorithm/lstar/observation_table.rbs
136
+ - sig/generated/lernen/algorithm/procedural.rbs
137
+ - sig/generated/lernen/algorithm/procedural/atr_manager.rbs
138
+ - sig/generated/lernen/algorithm/procedural/procedural_learner.rbs
139
+ - sig/generated/lernen/algorithm/procedural/procedural_sul.rbs
140
+ - sig/generated/lernen/algorithm/procedural/return_indices_acex.rbs
141
+ - sig/generated/lernen/automaton.rbs
142
+ - sig/generated/lernen/automaton/dfa.rbs
143
+ - sig/generated/lernen/automaton/mealy.rbs
144
+ - sig/generated/lernen/automaton/moore.rbs
145
+ - sig/generated/lernen/automaton/moore_like.rbs
146
+ - sig/generated/lernen/automaton/proc_util.rbs
147
+ - sig/generated/lernen/automaton/spa.rbs
148
+ - sig/generated/lernen/automaton/transition_system.rbs
149
+ - sig/generated/lernen/automaton/vpa.rbs
150
+ - sig/generated/lernen/equiv.rbs
151
+ - sig/generated/lernen/equiv/combined_oracle.rbs
152
+ - sig/generated/lernen/equiv/exhaustive_search_oracle.rbs
153
+ - sig/generated/lernen/equiv/moore_like_simulator_oracle.rbs
154
+ - sig/generated/lernen/equiv/oracle.rbs
155
+ - sig/generated/lernen/equiv/random_walk_oracle.rbs
156
+ - sig/generated/lernen/equiv/random_well_matched_word_oracle.rbs
157
+ - sig/generated/lernen/equiv/random_word_oracle.rbs
158
+ - sig/generated/lernen/equiv/spa_simulator_oracle.rbs
159
+ - sig/generated/lernen/equiv/test_words_oracle.rbs
160
+ - sig/generated/lernen/equiv/transition_system_simulator_oracle.rbs
161
+ - sig/generated/lernen/equiv/vpa_simulator_oracle.rbs
162
+ - sig/generated/lernen/graph.rbs
163
+ - sig/generated/lernen/system.rbs
164
+ - sig/generated/lernen/system/block_sul.rbs
165
+ - sig/generated/lernen/system/moore_like_simulator.rbs
166
+ - sig/generated/lernen/system/moore_like_sul.rbs
167
+ - sig/generated/lernen/system/sul.rbs
168
+ - sig/generated/lernen/system/transition_system_simulator.rbs
169
+ - sig/generated/lernen/version.rbs
50
170
  homepage: https://github.com/makenowjust/lernen
51
171
  licenses:
52
172
  - MIT
@@ -69,8 +189,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
189
  - !ruby/object:Gem::Version
70
190
  version: '0'
71
191
  requirements: []
72
- rubygems_version: 3.6.0.dev
192
+ rubygems_version: 3.5.11
73
193
  signing_key:
74
194
  specification_version: 4
75
- summary: a simple automata leraning library
195
+ summary: an automata leraning library
76
196
  test_files: []
data/.yardopts DELETED
@@ -1,3 +0,0 @@
1
- --protected
2
- --no-private
3
- --markup markdown
@@ -1,92 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Lernen
4
- # CexProcessor is a collection of implementations of couterexample processing procesudres.
5
- module CexProcessor
6
- # Processes a given `cex`. It returns a new prefix and suffix to advance a learning.
7
- def self.process(sul, hypothesis, cex, state_to_prefix, cex_processing: :binary)
8
- case cex_processing
9
- in :linear
10
- process_linear(sul, hypothesis, cex, state_to_prefix)
11
- in :binary
12
- process_binary(sul, hypothesis, cex, state_to_prefix)
13
- in :exponential
14
- process_exponential(sul, hypothesis, cex, state_to_prefix)
15
- end
16
- end
17
-
18
- # Processes a given `cex` by linear search.
19
- def self.process_linear(sul, hypothesis, cex, state_to_prefix)
20
- expected_output = sul.query(cex).last
21
-
22
- current_state = hypothesis.initial
23
- cex.each_with_index do |input, i|
24
- _, next_state = hypothesis.step(current_state, input)
25
-
26
- prefix = state_to_prefix[next_state]
27
- suffix = cex[i + 1...]
28
- return cex[0...i], input, suffix if expected_output != sul.query(prefix + suffix).last
29
-
30
- current_state = next_state
31
- end
32
- end
33
-
34
- # Processes a given `cex` by binary search.
35
- #
36
- # It is known as the Rivest-Schapire (RS) technique.
37
- def self.process_binary(sul, hypothesis, cex, state_to_prefix, low: 0)
38
- expected_output = sul.query(cex).last
39
-
40
- high = cex.size - 1
41
-
42
- while high - low > 1
43
- mid = (low + high) / 2
44
- prefix = cex[0...mid]
45
- suffix = cex[mid...]
46
-
47
- _, prefix_state = hypothesis.run(prefix)
48
- if expected_output == sul.query(state_to_prefix[prefix_state] + suffix).last
49
- low = mid
50
- else
51
- high = mid
52
- end
53
- end
54
-
55
- prefix = cex[0...low]
56
- suffix = cex[high...]
57
- [prefix, cex[low], suffix]
58
- end
59
-
60
- # Processes a given `cex` by exponential seatch.
61
- #
62
- # This idea is described in this paper.
63
- #
64
- # Isberner, Malte, and Bernhard Steffen. "An abstract framework for counterexample
65
- # analysis in active automata learning." International Conference on Grammatical
66
- # Inference. PMLR, 2014.
67
- def self.process_exponential(sul, hypothesis, cex, state_to_prefix)
68
- expected_output = sul.query(cex).last
69
-
70
- prev_bp = 0
71
- bp = 1
72
-
73
- loop do
74
- if bp >= cex.size
75
- bp = cex.size
76
- break
77
- end
78
-
79
- prefix = cex[0...bp]
80
- suffix = cex[bp...]
81
-
82
- _, prefix_state = hypothesis.run(prefix)
83
- break if expected_output != sul.query(state_to_prefix[prefix_state] + suffix).last
84
-
85
- prev_bp = bp
86
- bp *= 2
87
- end
88
-
89
- process_binary(sul, hypothesis, cex, state_to_prefix, low: prev_bp)
90
- end
91
- end
92
- end