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.
- checksums.yaml +4 -4
- data/.rubocop.yml +15 -0
- data/README.md +534 -48
- data/Rakefile +26 -7
- data/Steepfile +14 -0
- data/examples/ripper_prism.rb +63 -0
- data/examples/uri_parse_regexp.rb +73 -0
- data/lib/lernen/algorithm/cex_processor/acex.rb +43 -0
- data/lib/lernen/algorithm/cex_processor/prefix_transformer_acex.rb +43 -0
- data/lib/lernen/algorithm/cex_processor.rb +115 -0
- data/lib/lernen/algorithm/kearns_vazirani/discrimination_tree.rb +207 -0
- data/lib/lernen/algorithm/kearns_vazirani/kearns_vazirani_learner.rb +100 -0
- data/lib/lernen/algorithm/kearns_vazirani.rb +44 -0
- data/lib/lernen/algorithm/kearns_vazirani_vpa/discrimination_tree_vpa.rb +246 -0
- data/lib/lernen/algorithm/kearns_vazirani_vpa/kearns_vazirani_vpa_learner.rb +89 -0
- data/lib/lernen/algorithm/kearns_vazirani_vpa.rb +35 -0
- data/lib/lernen/algorithm/learner.rb +82 -0
- data/lib/lernen/algorithm/lsharp/lsharp_learner.rb +367 -0
- data/lib/lernen/algorithm/lsharp/observation_tree.rb +115 -0
- data/lib/lernen/algorithm/lsharp.rb +43 -0
- data/lib/lernen/algorithm/lstar/lstar_learner.rb +49 -0
- data/lib/lernen/algorithm/lstar/observation_table.rb +214 -0
- data/lib/lernen/algorithm/lstar.rb +49 -0
- data/lib/lernen/algorithm/procedural/atr_manager.rb +200 -0
- data/lib/lernen/algorithm/procedural/procedural_learner.rb +223 -0
- data/lib/lernen/algorithm/procedural/procedural_sul.rb +47 -0
- data/lib/lernen/algorithm/procedural/return_indices_acex.rb +58 -0
- data/lib/lernen/algorithm/procedural.rb +57 -0
- data/lib/lernen/algorithm.rb +19 -0
- data/lib/lernen/automaton/dfa.rb +204 -0
- data/lib/lernen/automaton/mealy.rb +108 -0
- data/lib/lernen/automaton/moore.rb +122 -0
- data/lib/lernen/automaton/moore_like.rb +83 -0
- data/lib/lernen/automaton/proc_util.rb +93 -0
- data/lib/lernen/automaton/spa.rb +368 -0
- data/lib/lernen/automaton/transition_system.rb +209 -0
- data/lib/lernen/automaton/vpa.rb +300 -0
- data/lib/lernen/automaton.rb +19 -493
- data/lib/lernen/equiv/combined_oracle.rb +57 -0
- data/lib/lernen/equiv/exhaustive_search_oracle.rb +60 -0
- data/lib/lernen/equiv/moore_like_simulator_oracle.rb +36 -0
- data/lib/lernen/equiv/oracle.rb +109 -0
- data/lib/lernen/equiv/random_walk_oracle.rb +69 -0
- data/lib/lernen/equiv/random_well_matched_word_oracle.rb +139 -0
- data/lib/lernen/equiv/random_word_oracle.rb +71 -0
- data/lib/lernen/equiv/spa_simulator_oracle.rb +39 -0
- data/lib/lernen/equiv/test_words_oracle.rb +42 -0
- data/lib/lernen/equiv/transition_system_simulator_oracle.rb +36 -0
- data/lib/lernen/equiv/vpa_simulator_oracle.rb +48 -0
- data/lib/lernen/equiv.rb +25 -0
- data/lib/lernen/graph.rb +215 -0
- data/lib/lernen/system/block_sul.rb +41 -0
- data/lib/lernen/system/moore_like_simulator.rb +45 -0
- data/lib/lernen/system/moore_like_sul.rb +33 -0
- data/lib/lernen/system/sul.rb +126 -0
- data/lib/lernen/system/transition_system_simulator.rb +40 -0
- data/lib/lernen/system.rb +72 -0
- data/lib/lernen/version.rb +2 -1
- data/lib/lernen.rb +284 -34
- data/rbs_collection.lock.yaml +16 -0
- data/rbs_collection.yaml +14 -0
- data/renovate.json +6 -0
- data/sig/generated/lernen/algorithm/cex_processor/acex.rbs +30 -0
- data/sig/generated/lernen/algorithm/cex_processor/prefix_transformer_acex.rbs +27 -0
- data/sig/generated/lernen/algorithm/cex_processor.rbs +59 -0
- data/sig/generated/lernen/algorithm/kearns_vazirani/discrimination_tree.rbs +68 -0
- data/sig/generated/lernen/algorithm/kearns_vazirani/kearns_vazirani_learner.rbs +51 -0
- data/sig/generated/lernen/algorithm/kearns_vazirani.rbs +32 -0
- data/sig/generated/lernen/algorithm/kearns_vazirani_vpa/discrimination_tree_vpa.rbs +73 -0
- data/sig/generated/lernen/algorithm/kearns_vazirani_vpa/kearns_vazirani_vpa_learner.rbs +51 -0
- data/sig/generated/lernen/algorithm/kearns_vazirani_vpa.rbs +20 -0
- data/sig/generated/lernen/algorithm/learner.rbs +53 -0
- data/sig/generated/lernen/algorithm/lsharp/lsharp_learner.rbs +103 -0
- data/sig/generated/lernen/algorithm/lsharp/observation_tree.rbs +53 -0
- data/sig/generated/lernen/algorithm/lsharp.rbs +38 -0
- data/sig/generated/lernen/algorithm/lstar/lstar_learner.rbs +38 -0
- data/sig/generated/lernen/algorithm/lstar/observation_table.rbs +79 -0
- data/sig/generated/lernen/algorithm/lstar.rbs +37 -0
- data/sig/generated/lernen/algorithm/procedural/atr_manager.rbs +80 -0
- data/sig/generated/lernen/algorithm/procedural/procedural_learner.rbs +79 -0
- data/sig/generated/lernen/algorithm/procedural/procedural_sul.rbs +36 -0
- data/sig/generated/lernen/algorithm/procedural/return_indices_acex.rbs +33 -0
- data/sig/generated/lernen/algorithm/procedural.rbs +27 -0
- data/sig/generated/lernen/algorithm.rbs +10 -0
- data/sig/generated/lernen/automaton/dfa.rbs +93 -0
- data/sig/generated/lernen/automaton/mealy.rbs +61 -0
- data/sig/generated/lernen/automaton/moore.rbs +69 -0
- data/sig/generated/lernen/automaton/moore_like.rbs +63 -0
- data/sig/generated/lernen/automaton/proc_util.rbs +38 -0
- data/sig/generated/lernen/automaton/spa.rbs +125 -0
- data/sig/generated/lernen/automaton/transition_system.rbs +108 -0
- data/sig/generated/lernen/automaton/vpa.rbs +109 -0
- data/sig/generated/lernen/automaton.rbs +15 -0
- data/sig/generated/lernen/equiv/combined_oracle.rbs +27 -0
- data/sig/generated/lernen/equiv/exhaustive_search_oracle.rbs +38 -0
- data/sig/generated/lernen/equiv/moore_like_simulator_oracle.rbs +27 -0
- data/sig/generated/lernen/equiv/oracle.rbs +75 -0
- data/sig/generated/lernen/equiv/random_walk_oracle.rbs +41 -0
- data/sig/generated/lernen/equiv/random_well_matched_word_oracle.rbs +70 -0
- data/sig/generated/lernen/equiv/random_word_oracle.rbs +45 -0
- data/sig/generated/lernen/equiv/spa_simulator_oracle.rbs +30 -0
- data/sig/generated/lernen/equiv/test_words_oracle.rbs +20 -0
- data/sig/generated/lernen/equiv/transition_system_simulator_oracle.rbs +27 -0
- data/sig/generated/lernen/equiv/vpa_simulator_oracle.rbs +33 -0
- data/sig/generated/lernen/equiv.rbs +11 -0
- data/sig/generated/lernen/graph.rbs +80 -0
- data/sig/generated/lernen/system/block_sul.rbs +29 -0
- data/sig/generated/lernen/system/moore_like_simulator.rbs +31 -0
- data/sig/generated/lernen/system/moore_like_sul.rbs +28 -0
- data/sig/generated/lernen/system/sul.rbs +87 -0
- data/sig/generated/lernen/system/transition_system_simulator.rbs +28 -0
- data/sig/generated/lernen/system.rbs +62 -0
- data/sig/generated/lernen/version.rbs +6 -0
- data/sig/generated/lernen.rbs +214 -0
- data/sig-test/generated/test/example_test.rbs +14 -0
- data/sig-test/generated/test/lernen/algorithm/kearns_vazirani_test.rbs +16 -0
- data/sig-test/generated/test/lernen/algorithm/kearns_vazirani_vpa_test.rbs +10 -0
- data/sig-test/generated/test/lernen/algorithm/lsharp_test.rbs +16 -0
- data/sig-test/generated/test/lernen/algorithm/lstar_test.rbs +16 -0
- data/sig-test/generated/test/lernen/algorithm/procedural_test.rbs +10 -0
- data/sig-test/generated/test/lernen/automaton/dfa_test.rbs +19 -0
- data/sig-test/generated/test/lernen/automaton/mealy_test.rbs +19 -0
- data/sig-test/generated/test/lernen/automaton/moore_test.rbs +19 -0
- data/sig-test/generated/test/lernen/automaton/proc_util_test.rbs +19 -0
- data/sig-test/generated/test/lernen/automaton/spa_test.rbs +19 -0
- data/sig-test/generated/test/lernen/automaton/vpa_test.rbs +19 -0
- data/sig-test/generated/test/lernen/equiv/exhaustive_search_oracle_test.rbs +10 -0
- data/sig-test/generated/test/lernen/equiv/random_walk_oracle_test.rbs +10 -0
- data/sig-test/generated/test/lernen/equiv/random_word_oracle_test.rbs +10 -0
- data/sig-test/generated/test/lernen/system/block_sul_test.rbs +16 -0
- data/sig-test/generated/test/lernen/system/moore_like_simulator_test.rbs +16 -0
- data/sig-test/generated/test/lernen/system/transition_system_simulator_test.rbs +13 -0
- data/sig-test/generated/test/lernen/system_test.rbs +11 -0
- data/sig-test/generated/test/lernen_test.rbs +13 -0
- metadata +131 -11
- data/.yardopts +0 -3
- data/lib/lernen/cex_processor.rb +0 -92
- data/lib/lernen/kearns_vazirani.rb +0 -310
- data/lib/lernen/lsharp.rb +0 -344
- data/lib/lernen/lstar.rb +0 -170
- data/lib/lernen/oracle.rb +0 -119
- 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,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,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.
|
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-
|
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/
|
44
|
-
- lib/lernen/
|
45
|
-
- lib/lernen/
|
46
|
-
- lib/lernen/
|
47
|
-
- lib/lernen/
|
48
|
-
- lib/lernen/
|
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.
|
192
|
+
rubygems_version: 3.5.11
|
73
193
|
signing_key:
|
74
194
|
specification_version: 4
|
75
|
-
summary:
|
195
|
+
summary: an automata leraning library
|
76
196
|
test_files: []
|
data/.yardopts
DELETED
data/lib/lernen/cex_processor.rb
DELETED
@@ -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
|