summaryrefslogtreecommitdiff
path: root/grammars/timetable/Timetable.gf
blob: 8eab2600b7ff3cbcfc3f8b0bf77e3a4d0f939ff5 (plain)
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
abstract Timetable = {
  cat
    Table ;
    TrainList CityList ;
    City ;
    CityList ;
    Train CityList ;
    Stop ;
    Time ;
    Number ;

  fun
    MkTable : (cs : CityList) -> TrainList cs -> Table ;
    NilTrain : (cs : CityList) -> TrainList cs ;
    ConsTrain : 
      (cs : CityList) -> Number -> Train cs -> TrainList cs -> TrainList cs ;
    OneCity : City -> CityList ;
    ConsCity : City -> CityList -> CityList ;

    StopTime : Time -> Stop ;
    NoStop : Stop ;
    
    LocTrain : (c : City) -> Stop -> Train (OneCity c) ;
    CityTrain : 
      (c : City) -> Stop -> (cs : CityList) -> 
        Train cs -> Train (ConsCity c cs) ;

    T : Int -> Time ;
    N : Int -> Number ;
    C : String -> City ;
}