stamina 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. data/CHANGELOG.md +24 -0
  2. data/Gemfile.lock +5 -1
  3. data/bin/stamina +10 -0
  4. data/lib/stamina.rb +2 -1
  5. data/lib/stamina/abbadingo.rb +2 -0
  6. data/lib/stamina/abbadingo/random_dfa.rb +48 -0
  7. data/lib/stamina/abbadingo/random_sample.rb +146 -0
  8. data/lib/stamina/adl.rb +6 -6
  9. data/lib/stamina/automaton.rb +29 -4
  10. data/lib/stamina/automaton/complete.rb +36 -0
  11. data/lib/stamina/automaton/equivalence.rb +55 -0
  12. data/lib/stamina/automaton/metrics.rb +8 -1
  13. data/lib/stamina/automaton/minimize.rb +25 -0
  14. data/lib/stamina/automaton/minimize/hopcroft.rb +116 -0
  15. data/lib/stamina/automaton/minimize/pitchies.rb +64 -0
  16. data/lib/stamina/automaton/strip.rb +16 -0
  17. data/lib/stamina/automaton/walking.rb +46 -19
  18. data/lib/stamina/command.rb +45 -0
  19. data/lib/stamina/command/abbadingo_dfa.rb +81 -0
  20. data/lib/stamina/command/abbadingo_samples.rb +40 -0
  21. data/lib/stamina/command/adl2dot.rb +71 -0
  22. data/lib/stamina/command/classify.rb +48 -0
  23. data/lib/stamina/command/help.rb +27 -0
  24. data/lib/stamina/command/infer.rb +141 -0
  25. data/lib/stamina/command/metrics.rb +51 -0
  26. data/lib/stamina/command/robustness.rb +22 -0
  27. data/lib/stamina/command/score.rb +35 -0
  28. data/lib/stamina/errors.rb +4 -1
  29. data/lib/stamina/ext/math.rb +20 -0
  30. data/lib/stamina/induction/{redblue.rb → blue_fringe.rb} +29 -28
  31. data/lib/stamina/induction/commons.rb +32 -46
  32. data/lib/stamina/induction/rpni.rb +7 -9
  33. data/lib/stamina/induction/union_find.rb +3 -3
  34. data/lib/stamina/loader.rb +1 -0
  35. data/lib/stamina/sample.rb +79 -2
  36. data/lib/stamina/scoring.rb +37 -0
  37. data/lib/stamina/version.rb +2 -2
  38. data/stamina.gemspec +2 -1
  39. data/stamina.noespec +9 -12
  40. data/test/stamina/abbadingo/random_dfa_test.rb +16 -0
  41. data/test/stamina/abbadingo/random_sample_test.rb +78 -0
  42. data/test/stamina/adl_test.rb +27 -2
  43. data/test/stamina/automaton/complete_test.rb +58 -0
  44. data/test/stamina/automaton/equivalence_test.rb +120 -0
  45. data/test/stamina/automaton/minimize/hopcroft_test.rb +15 -0
  46. data/test/stamina/automaton/minimize/minimize_test.rb +55 -0
  47. data/test/stamina/automaton/minimize/pitchies_test.rb +15 -0
  48. data/test/stamina/automaton/minimize/rice_edu_10.adl +16 -0
  49. data/test/stamina/automaton/minimize/rice_edu_10.min.adl +13 -0
  50. data/test/stamina/automaton/minimize/rice_edu_13.adl +13 -0
  51. data/test/stamina/automaton/minimize/rice_edu_13.min.adl +7 -0
  52. data/test/stamina/automaton/minimize/should_strip_1.adl +8 -0
  53. data/test/stamina/automaton/minimize/should_strip_1.min.adl +6 -0
  54. data/test/stamina/automaton/minimize/unknown_1.adl +16 -0
  55. data/test/stamina/automaton/minimize/unknown_1.min.adl +12 -0
  56. data/test/stamina/automaton/strip_test.rb +36 -0
  57. data/test/stamina/automaton/walking/dfa_delta_test.rb +39 -0
  58. data/test/stamina/automaton_test.rb +13 -1
  59. data/test/stamina/induction/{redblue_test.rb → blue_fringe_test.rb} +22 -22
  60. data/test/stamina/sample_test.rb +75 -0
  61. data/test/stamina/stamina_test.rb +13 -2
  62. metadata +98 -23
  63. data/bin/adl2dot +0 -12
  64. data/bin/classify +0 -12
  65. data/bin/redblue +0 -12
  66. data/bin/rpni +0 -12
  67. data/lib/stamina/command/adl2dot_command.rb +0 -73
  68. data/lib/stamina/command/classify_command.rb +0 -57
  69. data/lib/stamina/command/redblue_command.rb +0 -58
  70. data/lib/stamina/command/rpni_command.rb +0 -58
  71. data/lib/stamina/command/stamina_command.rb +0 -79
@@ -0,0 +1,15 @@
1
+ require File.expand_path("../minimize_test", __FILE__)
2
+ module Stamina
3
+ class Automaton
4
+ module Minimize
5
+ class PitchiesTest < MinimizeTest
6
+
7
+ def algo
8
+ Pitchies
9
+ end
10
+
11
+ end # class PitchiesTest
12
+ end # module Minimize
13
+ end # class Automaton
14
+ end # module Stamina
15
+
@@ -0,0 +1,16 @@
1
+ 5 10
2
+ 0 true false
3
+ 1 false false
4
+ 2 false false
5
+ 3 false false
6
+ 4 false true
7
+ 0 1 a
8
+ 0 2 b
9
+ 1 1 a
10
+ 1 3 b
11
+ 2 1 a
12
+ 2 2 b
13
+ 3 1 a
14
+ 3 4 b
15
+ 4 1 a
16
+ 4 2 b
@@ -0,0 +1,13 @@
1
+ 4 8
2
+ 0 true false
3
+ 1 false false
4
+ 2 false false
5
+ 3 false true
6
+ 0 1 a
7
+ 0 0 b
8
+ 1 1 a
9
+ 1 2 b
10
+ 2 1 a
11
+ 2 3 b
12
+ 3 1 a
13
+ 3 0 b
@@ -0,0 +1,13 @@
1
+ 4 7
2
+ 0 true false
3
+ 1 false true
4
+ 2 false true
5
+ 3 false true
6
+ 0 1 a
7
+ 1 2 b
8
+ 1 3 c
9
+ 2 2 b
10
+ 2 3 c
11
+ 3 2 b
12
+ 3 3 c
13
+
@@ -0,0 +1,7 @@
1
+ 2 3
2
+ 0 true false
3
+ 1 false true
4
+ 0 1 a
5
+ 1 1 b
6
+ 1 1 c
7
+
@@ -0,0 +1,8 @@
1
+ 3 3
2
+ 0 true false
3
+ 1 false true
4
+ 2 false false
5
+ 0 1 a
6
+ 1 0 b
7
+ 2 1 b
8
+
@@ -0,0 +1,6 @@
1
+ 2 2
2
+ 0 true false
3
+ 1 false true
4
+ 0 1 a
5
+ 1 0 b
6
+
@@ -0,0 +1,16 @@
1
+ 5 9
2
+ 0 true false
3
+ 1 false false
4
+ 2 false false
5
+ 3 false true
6
+ 4 false true
7
+ 0 1 a
8
+ 0 1 b
9
+ 0 1 c
10
+ 0 2 d
11
+ 0 2 f
12
+ 1 3 f
13
+ 1 3 g
14
+ 2 4 f
15
+ 2 4 g
16
+
@@ -0,0 +1,12 @@
1
+ 3 7
2
+ 0 true false
3
+ 1 false false
4
+ 2 false true
5
+ 0 1 a
6
+ 0 1 b
7
+ 0 1 c
8
+ 0 1 d
9
+ 0 1 f
10
+ 1 2 f
11
+ 1 2 g
12
+
@@ -0,0 +1,36 @@
1
+ require 'test/unit'
2
+ require 'stamina/adl'
3
+ require 'stamina/stamina_test'
4
+ module Stamina
5
+ class Automaton
6
+ class StripTest < StaminaTest
7
+
8
+ def test_on_all_reachable
9
+ assert_equivalent @small_dfa, @small_dfa.strip
10
+ end
11
+
12
+ def test_with_unreachable_states
13
+ dfa = Stamina::ADL.parse_automaton <<-EOF
14
+ 3 3
15
+ 0 true false
16
+ 1 false true
17
+ 2 false false
18
+ 0 1 a
19
+ 1 0 b
20
+ 2 1 a
21
+ EOF
22
+ expected = Stamina::ADL.parse_automaton <<-EOF
23
+ 2 2
24
+ 0 true false
25
+ 1 false true
26
+ 0 1 a
27
+ 1 0 b
28
+ EOF
29
+ assert_not_equivalent(expected, dfa)
30
+ assert_equivalent(expected, dfa.strip)
31
+ end
32
+
33
+ end # class StripTest
34
+ end # class Automaton
35
+ end # module Stamina
36
+
@@ -0,0 +1,39 @@
1
+ require 'test/unit'
2
+ require 'stamina/stamina_test'
3
+ module Stamina
4
+ class Automaton
5
+ # Tests Walking module on Automaton class
6
+ class WalkingTestDfaDelta < StaminaTest
7
+
8
+ DFA = Stamina::ADL::parse_automaton <<-EOF
9
+ 2 3
10
+ 0 true false
11
+ 1 false true
12
+ 0 1 a
13
+ 1 0 b
14
+ 1 1 a
15
+ EOF
16
+ S0 = DFA.ith_state(0)
17
+ S1 = DFA.ith_state(1)
18
+
19
+ def test_with_single_state_as_from
20
+ assert_equal S1, DFA.dfa_delta(S0, 'a')
21
+ assert_equal S1, DFA.dfa_delta(0, 'a')
22
+ assert_equal S0, DFA.dfa_delta(1, 'b')
23
+ end
24
+
25
+ def test_with_single_array_as_from
26
+ assert_equal [S1], DFA.dfa_delta([S0], 'a')
27
+ assert_equal [S1], DFA.dfa_delta([0], 'a')
28
+ assert_equal [S0], DFA.dfa_delta([1], 'b')
29
+ end
30
+
31
+ def test_with_multiple_array_as_from
32
+ assert_equal [S1], DFA.dfa_delta([S0, S1], 'a')
33
+ assert_equal [S1], DFA.dfa_delta([0, 1], 'a')
34
+ assert_equal [S0], DFA.dfa_delta([0, 1], 'b')
35
+ end
36
+
37
+ end # class WalkingTestDfaDelta
38
+ end # class Automaton
39
+ end # module Stamina
@@ -4,6 +4,18 @@ module Stamina
4
4
 
5
5
  class AutomatonTest < StaminaTest
6
6
 
7
+ def test_state_sink_q
8
+ x, y = nil, nil
9
+ Automaton.new(true) do |fa|
10
+ x = fa.add_state(:initial => true, :accepting => true)
11
+ y = fa.add_state(:initial => false, :accepting => false)
12
+ fa.connect(0,1,'a')
13
+ fa.connect(1,1,'b')
14
+ end
15
+ assert_equal false, x.sink?
16
+ assert_equal true, y.sink?
17
+ end
18
+
7
19
  # Tests that an automaton can be created with onself=true
8
20
  def test_new_on_self
9
21
  Automaton.new(true) do |fa|
@@ -1089,4 +1101,4 @@ module Stamina
1089
1101
 
1090
1102
  end
1091
1103
 
1092
- end # module Stamina
1104
+ end # module Stamina
@@ -1,28 +1,28 @@
1
1
  require File.join(File.dirname(__FILE__), "induction_test")
2
2
  module Stamina
3
3
  module Induction
4
- class RedBlueTest < Stamina::Induction::InductionTest
4
+ class BlueFringeTest < Stamina::Induction::InductionTest
5
5
 
6
- # Factors a ready to be tested RedBlue instance
7
- def redblue(ufds)
8
- redblue = Stamina::Induction::RedBlue.new(:verbose => false)
9
- redblue.instance_eval do
6
+ # Factors a ready to be tested BlueFringe instance
7
+ def blue_fringe(ufds)
8
+ blue_fringe = Stamina::Induction::BlueFringe.new(:verbose => false)
9
+ blue_fringe.instance_eval do
10
10
  @ufds = ufds
11
11
  end
12
- redblue
12
+ blue_fringe
13
13
  end
14
14
 
15
15
  def test_merge_and_determinize_score
16
- redblue = redblue(factor_ufds)
17
- assert_equal nil, redblue.merge_and_determinize_score(1, 0)
18
- assert_equal 1, redblue.merge_and_determinize_score(1, 3)
19
- assert_equal 1, redblue.merge_and_determinize_score(2, 0)
16
+ blue_fringe = blue_fringe(factor_ufds)
17
+ assert_equal nil, blue_fringe.merge_and_determinize_score(1, 0)
18
+ assert_equal 1, blue_fringe.merge_and_determinize_score(1, 3)
19
+ assert_equal 1, blue_fringe.merge_and_determinize_score(2, 0)
20
20
  end
21
21
 
22
22
  def test_main_whole_execution
23
23
  ufds = factor_ufds
24
- redblue = redblue(ufds)
25
- assert_equal [0, 1, 0, 1, 0, 1, 0, 0, 1, 0], redblue.main(ufds).to_a
24
+ blue_fringe = blue_fringe(ufds)
25
+ assert_equal [0, 1, 0, 1, 0, 1, 0, 0, 1, 0], blue_fringe.main(ufds).to_a
26
26
  end
27
27
 
28
28
  def test_execute_whole_execution
@@ -35,7 +35,7 @@ module Stamina
35
35
  1 0 b
36
36
  1 1 a
37
37
  EOF
38
- dfa = RedBlue.execute(@sample)
38
+ dfa = BlueFringe.execute(@sample)
39
39
  assert_equal true, @sample.correctly_classified_by?(dfa)
40
40
  assert_equal @sample.signature, dfa.signature(@sample)
41
41
  assert_nil equivalent?(expected, dfa)
@@ -48,7 +48,7 @@ module Stamina
48
48
  sample = Stamina::ADL.parse_sample_file(sample_file)
49
49
  expected = Stamina::ADL.parse_automaton_file(File.join(here, "redblue_#{name}_expected.adl"))
50
50
  assert sample.correctly_classified_by?(expected)
51
- dfa = RedBlue.execute(sample)
51
+ dfa = BlueFringe.execute(sample)
52
52
  assert sample.correctly_classified_by?(dfa)
53
53
  assert_equal sample.signature, dfa.signature(sample)
54
54
  assert_nil equivalent?(expected, dfa)
@@ -59,12 +59,12 @@ module Stamina
59
59
  def test_on_public_characteristic_example
60
60
  example_folder = File.join(File.dirname(__FILE__), '..', '..', '..', 'example', 'basic')
61
61
  sample = Stamina::ADL.parse_sample_file(File.join(example_folder, 'characteristic_sample.adl'))
62
- redblued = Stamina::Induction::RedBlue.execute(sample)
63
- assert_equal 4, redblued.state_count
64
- s0, = redblued.initial_state
65
- s1 = redblued.dfa_step(s0, 'b')
66
- s2 = redblued.dfa_step(s0, 'a')
67
- s3 = redblued.dfa_step(s2, 'b')
62
+ blue_fringed = Stamina::Induction::BlueFringe.execute(sample)
63
+ assert_equal 4, blue_fringed.state_count
64
+ s0, = blue_fringed.initial_state
65
+ s1 = blue_fringed.dfa_step(s0, 'b')
66
+ s2 = blue_fringed.dfa_step(s0, 'a')
67
+ s3 = blue_fringed.dfa_step(s2, 'b')
68
68
  assert_equal true, s0.accepting?
69
69
  assert_equal true, s3.accepting?
70
70
  assert_equal false, s1.accepting?
@@ -75,9 +75,9 @@ module Stamina
75
75
  assert_equal s3, s2.dfa_step('b')
76
76
  assert_equal s3, s3.dfa_step('b')
77
77
  assert_equal s0, s3.dfa_step('a')
78
- assert_equal sample.signature, redblued.signature(sample)
78
+ assert_equal sample.signature, blue_fringed.signature(sample)
79
79
  end
80
80
 
81
81
  end
82
82
  end
83
- end
83
+ end
@@ -210,6 +210,81 @@ module Stamina
210
210
  SAMPLE
211
211
  assert_equal '110?', s.signature
212
212
  end
213
+
214
+ def test_to_pta_on_empty_sample
215
+ empty = Stamina::ADL::parse_automaton <<-EOF
216
+ 1 0
217
+ 0 true false
218
+ EOF
219
+ assert_equivalent empty, Sample.new.to_pta
220
+ end
221
+
222
+ def test_to_pta_on_lambda_accepting_sample
223
+ dfa = Stamina::ADL::parse_automaton <<-EOF
224
+ 1 0
225
+ 0 true true false
226
+ EOF
227
+ sample = Stamina::ADL::parse_sample <<-EOF
228
+ +
229
+ EOF
230
+ assert_equivalent dfa, sample.to_pta
231
+ end
232
+
233
+ def test_to_pta_on_lambda_rejecting_sample
234
+ dfa = Stamina::ADL::parse_automaton <<-EOF
235
+ 1 0
236
+ 0 true false true
237
+ EOF
238
+ sample = Stamina::ADL::parse_sample <<-EOF
239
+ -
240
+ EOF
241
+ assert_equivalent dfa, sample.to_pta
242
+ end
243
+
244
+ def test_to_pta_respects_natural_ordering
245
+ dfa = Stamina::ADL::parse_automaton <<-EOF
246
+ 3 2
247
+ 0 true false
248
+ 1 false true
249
+ 2 false true
250
+ 0 1 a
251
+ 0 2 b
252
+ EOF
253
+ sample = Stamina::ADL::parse_sample <<-EOF
254
+ + a
255
+ + b
256
+ EOF
257
+ pta = sample.to_pta
258
+ assert_equivalent dfa, pta
259
+ assert_equal pta.ith_state(1), pta.dfa_reached("? a")
260
+ assert_equal pta.ith_state(2), pta.dfa_reached("? b")
261
+ end
262
+
263
+ def test_to_pta_on_realcase_example
264
+ dfa = Stamina::ADL::parse_automaton <<-EOF
265
+ 5 4
266
+ 0 true true
267
+ 1 false true
268
+ 2 false false true
269
+ 3 false false true
270
+ 4 false true
271
+ 0 1 a
272
+ 0 2 b
273
+ 1 3 b
274
+ 2 4 a
275
+ EOF
276
+ sample = Stamina::ADL::parse_sample <<-EOF
277
+ +
278
+ + a
279
+ + b a
280
+ - a b
281
+ - b
282
+ EOF
283
+ pta = sample.to_pta
284
+ assert_equivalent dfa, pta
285
+ assert_equal pta.ith_state(3), pta.dfa_reached("? a b")
286
+ assert_equal pta.ith_state(4), pta.dfa_reached("? b a")
287
+ end
213
288
 
214
289
  end # class SampleTest
215
290
  end # module Stamina
@@ -18,6 +18,10 @@ module Stamina
18
18
  # - @nfa_examples is an array containing non-deterministic automaton only.
19
19
  #
20
20
  class StaminaTest < Test::Unit::TestCase
21
+
22
+ def load_adl_automaton(file, resolver)
23
+ Stamina::ADL.parse_automaton_file(File.expand_path("../#{file}", resolver))
24
+ end
21
25
 
22
26
  # Creates a small automaton for the sake of simple tests
23
27
  def setup
@@ -64,6 +68,13 @@ module Stamina
64
68
  end
65
69
  end
66
70
 
67
- end # class StaminaTest
71
+ def assert_not_equivalent(expected, dfa)
72
+ assert !expected.complete.equivalent?(dfa.complete)
73
+ end
74
+
75
+ def assert_equivalent(expected, dfa)
76
+ assert expected.complete.equivalent?(dfa.complete)
77
+ end
68
78
 
69
- end # module Stamina
79
+ end # class StaminaTest
80
+ end # module Stamina
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stamina
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 3
9
- - 1
10
- version: 0.3.1
8
+ - 4
9
+ - 0
10
+ version: 0.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Bernard Lambeau
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-24 00:00:00 +01:00
18
+ date: 2011-05-03 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -113,16 +113,45 @@ dependencies:
113
113
  name: wlang
114
114
  version_requirements: *id006
115
115
  prerelease: false
116
+ - !ruby/object:Gem::Dependency
117
+ type: :development
118
+ requirement: &id007 !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ~>
122
+ - !ruby/object:Gem::Version
123
+ hash: 15
124
+ segments:
125
+ - 2
126
+ - 3
127
+ - 6
128
+ version: 2.3.6
129
+ name: gnuplot
130
+ version_requirements: *id007
131
+ prerelease: false
132
+ - !ruby/object:Gem::Dependency
133
+ type: :runtime
134
+ requirement: &id008 !ruby/object:Gem::Requirement
135
+ none: false
136
+ requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ hash: 23
140
+ segments:
141
+ - 0
142
+ - 2
143
+ - 0
144
+ version: 0.2.0
145
+ name: quickl
146
+ version_requirements: *id008
147
+ prerelease: false
116
148
  description: |-
117
149
  Stamina is an automaton and regular inference toolkit initially developped for the baseline
118
150
  of the Stamina Competition (stamina.chefbe.net).
119
151
  email:
120
152
  - blambeau@gmail.com
121
153
  executables:
122
- - adl2dot
123
- - classify
124
- - redblue
125
- - rpni
154
+ - stamina
126
155
  extensions: []
127
156
 
128
157
  extra_rdoc_files:
@@ -130,10 +159,7 @@ extra_rdoc_files:
130
159
  - CHANGELOG.md
131
160
  - LICENCE.md
132
161
  files:
133
- - bin/adl2dot
134
- - bin/classify
135
- - bin/redblue
136
- - bin/rpni
162
+ - bin/stamina
137
163
  - example/adl/automaton.adl
138
164
  - example/adl/sample.adl
139
165
  - example/basic/characteristic_sample.adl
@@ -145,17 +171,27 @@ files:
145
171
  - lib/stamina/automaton.rb
146
172
  - lib/stamina/automaton/walking.rb
147
173
  - lib/stamina/automaton/metrics.rb
174
+ - lib/stamina/automaton/complete.rb
175
+ - lib/stamina/automaton/minimize.rb
176
+ - lib/stamina/automaton/equivalence.rb
177
+ - lib/stamina/automaton/minimize/hopcroft.rb
178
+ - lib/stamina/automaton/minimize/pitchies.rb
179
+ - lib/stamina/automaton/strip.rb
148
180
  - lib/stamina/classifier.rb
149
- - lib/stamina/command/adl2dot_command.rb
150
- - lib/stamina/command/classify_command.rb
151
- - lib/stamina/command/redblue_command.rb
152
- - lib/stamina/command/rpni_command.rb
153
- - lib/stamina/command/stamina_command.rb
181
+ - lib/stamina/command/score.rb
182
+ - lib/stamina/command/infer.rb
183
+ - lib/stamina/command/help.rb
184
+ - lib/stamina/command/abbadingo_dfa.rb
185
+ - lib/stamina/command/metrics.rb
186
+ - lib/stamina/command/abbadingo_samples.rb
187
+ - lib/stamina/command/classify.rb
188
+ - lib/stamina/command/robustness.rb
189
+ - lib/stamina/command/adl2dot.rb
154
190
  - lib/stamina/errors.rb
155
191
  - lib/stamina/induction/commons.rb
156
- - lib/stamina/induction/redblue.rb
157
192
  - lib/stamina/induction/rpni.rb
158
193
  - lib/stamina/induction/union_find.rb
194
+ - lib/stamina/induction/blue_fringe.rb
159
195
  - lib/stamina/input_string.rb
160
196
  - lib/stamina/markable.rb
161
197
  - lib/stamina/sample.rb
@@ -164,6 +200,11 @@ files:
164
200
  - lib/stamina/scoring.rb
165
201
  - lib/stamina/utils/decorate.rb
166
202
  - lib/stamina/utils.rb
203
+ - lib/stamina/abbadingo.rb
204
+ - lib/stamina/abbadingo/random_dfa.rb
205
+ - lib/stamina/abbadingo/random_sample.rb
206
+ - lib/stamina/command.rb
207
+ - lib/stamina/ext/math.rb
167
208
  - tasks/yard.rake
168
209
  - tasks/debug_mail.txt
169
210
  - tasks/gem.rake
@@ -174,21 +215,23 @@ files:
174
215
  - test/stamina/automaton_additional_test.rb
175
216
  - test/stamina/automaton_test.rb
176
217
  - test/stamina/scoring_test.rb
218
+ - test/stamina/abbadingo/random_dfa_test.rb
219
+ - test/stamina/abbadingo/random_sample_test.rb
177
220
  - test/stamina/exit.rb
178
221
  - test/stamina/induction/induction_test.rb
179
222
  - test/stamina/induction/redblue_mergesamestatebug_expected.adl
180
223
  - test/stamina/induction/redblue_mergesamestatebug_pta.dot
181
224
  - test/stamina/induction/redblue_mergesamestatebug_sample.adl
182
- - test/stamina/induction/redblue_test.rb
225
+ - test/stamina/induction/rpni_test.rb
183
226
  - test/stamina/induction/redblue_universal_expected.adl
184
227
  - test/stamina/induction/redblue_universal_sample.adl
185
228
  - test/stamina/induction/rpni_inria_expected.adl
186
229
  - test/stamina/induction/rpni_inria_sample.adl
187
- - test/stamina/induction/rpni_test.rb
188
230
  - test/stamina/induction/rpni_test_pta.dot
189
231
  - test/stamina/induction/rpni_universal_expected.adl
190
232
  - test/stamina/induction/rpni_universal_sample.adl
191
233
  - test/stamina/induction/union_find_test.rb
234
+ - test/stamina/induction/blue_fringe_test.rb
192
235
  - test/stamina/input_string_test.rb
193
236
  - test/stamina/markable_test.rb
194
237
  - test/stamina/randdfa.adl
@@ -205,6 +248,21 @@ files:
205
248
  - test/stamina/automaton/walking_test.rb
206
249
  - test/stamina/automaton/to_dot_test.rb
207
250
  - test/stamina/automaton/metrics_test.rb
251
+ - test/stamina/automaton/walking/dfa_delta_test.rb
252
+ - test/stamina/automaton/equivalence_test.rb
253
+ - test/stamina/automaton/strip_test.rb
254
+ - test/stamina/automaton/complete_test.rb
255
+ - test/stamina/automaton/minimize/minimize_test.rb
256
+ - test/stamina/automaton/minimize/rice_edu_13.adl
257
+ - test/stamina/automaton/minimize/rice_edu_13.min.adl
258
+ - test/stamina/automaton/minimize/rice_edu_10.adl
259
+ - test/stamina/automaton/minimize/rice_edu_10.min.adl
260
+ - test/stamina/automaton/minimize/pitchies_test.rb
261
+ - test/stamina/automaton/minimize/unknown_1.adl
262
+ - test/stamina/automaton/minimize/unknown_1.min.adl
263
+ - test/stamina/automaton/minimize/hopcroft_test.rb
264
+ - test/stamina/automaton/minimize/should_strip_1.adl
265
+ - test/stamina/automaton/minimize/should_strip_1.min.adl
208
266
  - test/test_all.rb
209
267
  - .gemtest
210
268
  - CHANGELOG.md
@@ -255,21 +313,23 @@ test_files:
255
313
  - test/stamina/automaton_additional_test.rb
256
314
  - test/stamina/automaton_test.rb
257
315
  - test/stamina/scoring_test.rb
316
+ - test/stamina/abbadingo/random_dfa_test.rb
317
+ - test/stamina/abbadingo/random_sample_test.rb
258
318
  - test/stamina/exit.rb
259
319
  - test/stamina/induction/induction_test.rb
260
320
  - test/stamina/induction/redblue_mergesamestatebug_expected.adl
261
321
  - test/stamina/induction/redblue_mergesamestatebug_pta.dot
262
322
  - test/stamina/induction/redblue_mergesamestatebug_sample.adl
263
- - test/stamina/induction/redblue_test.rb
323
+ - test/stamina/induction/rpni_test.rb
264
324
  - test/stamina/induction/redblue_universal_expected.adl
265
325
  - test/stamina/induction/redblue_universal_sample.adl
266
326
  - test/stamina/induction/rpni_inria_expected.adl
267
327
  - test/stamina/induction/rpni_inria_sample.adl
268
- - test/stamina/induction/rpni_test.rb
269
328
  - test/stamina/induction/rpni_test_pta.dot
270
329
  - test/stamina/induction/rpni_universal_expected.adl
271
330
  - test/stamina/induction/rpni_universal_sample.adl
272
331
  - test/stamina/induction/union_find_test.rb
332
+ - test/stamina/induction/blue_fringe_test.rb
273
333
  - test/stamina/input_string_test.rb
274
334
  - test/stamina/markable_test.rb
275
335
  - test/stamina/randdfa.adl
@@ -286,4 +346,19 @@ test_files:
286
346
  - test/stamina/automaton/walking_test.rb
287
347
  - test/stamina/automaton/to_dot_test.rb
288
348
  - test/stamina/automaton/metrics_test.rb
349
+ - test/stamina/automaton/walking/dfa_delta_test.rb
350
+ - test/stamina/automaton/equivalence_test.rb
351
+ - test/stamina/automaton/strip_test.rb
352
+ - test/stamina/automaton/complete_test.rb
353
+ - test/stamina/automaton/minimize/minimize_test.rb
354
+ - test/stamina/automaton/minimize/rice_edu_13.adl
355
+ - test/stamina/automaton/minimize/rice_edu_13.min.adl
356
+ - test/stamina/automaton/minimize/rice_edu_10.adl
357
+ - test/stamina/automaton/minimize/rice_edu_10.min.adl
358
+ - test/stamina/automaton/minimize/pitchies_test.rb
359
+ - test/stamina/automaton/minimize/unknown_1.adl
360
+ - test/stamina/automaton/minimize/unknown_1.min.adl
361
+ - test/stamina/automaton/minimize/hopcroft_test.rb
362
+ - test/stamina/automaton/minimize/should_strip_1.adl
363
+ - test/stamina/automaton/minimize/should_strip_1.min.adl
289
364
  - test/test_all.rb