stamina 0.3.1 → 0.4.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 (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