-
Notifications
You must be signed in to change notification settings - Fork 1
/
LearningInternals.py
35 lines (22 loc) · 783 Bytes
/
LearningInternals.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from aalpy.base import SUL
from aalpy.learning_algs import run_Lstar
from aalpy.oracles import StatePrefixEqOracle
from TrainAndExtract import train_RNN_on_tomita_grammar
class InternalSUL(SUL):
def __init__(self, rnn):
super().__init__()
self.rnn = rnn
def pre(self):
self.rnn.state = self.rnn.rnn.initial_state()
def post(self):
self.rnn.renew()
def step(self, letter):
if letter is None:
return self.rnn.step(None)
return self.rnn.step_internal(letter)
rnn = train_RNN_on_tomita_grammar(tomita_grammar=3, train=False)
sul = InternalSUL(rnn)
alphabet = ['0', '1']
eq_oracle = StatePrefixEqOracle(alphabet, sul)
model = run_Lstar(alphabet, sul, eq_oracle, automaton_type='mealy')
print(model)