#load "dynlink.cma"
#load "camlp4of.cma"
#load "unix.cma"
#load "nums.cma"

#mod_use "index.ml"
#mod_use "ref.ml"
#mod_use "ls.ml"
#mod_use "util.ml"

#mod_use "term.ml"
#mod_use "trs.ml"
#mod_use "_build/parser.ml"
#mod_use "_build/lexer.ml"
#mod_use "read.ml"
#mod_use "form.ml"
#mod_use "result.ml"

#mod_use "_build/yices_parser.ml"
#mod_use "_build/yices_lexer.ml"
#mod_use "console.ml"
#mod_use "match.ml"
#mod_use "step.ml"
#mod_use "join.ml"

#mod_use "yices.ml"
#mod_use "acrpo.ml"

#mod_use "rl.ml"

#mod_use "assoc.ml"
#mod_use "acrpo.ml"
#mod_use "dio.ml"
#mod_use "ac_subst.ml"
#mod_use "ac_rewriting.ml"
#mod_use "ac_overlap.ml"
#mod_use "ac_cr.ml"

#mod_use "commute.ml"
#mod_use "compose.ml"

open Term
open Trs
open Util
open Ls
open List

(* #install_printer Trs.print_rules *)

(************************************)
let p_load num = Read.read_trs ("trs/problem/" ^ (string_of_int num) ^ ".trs")

let load num =
  let rs = Read.read_trs ("trs/" ^ (string_of_int num) ^ ".trs") in
  print_rules rs;
  rs

let load_s num  = Read.read_trs ("trs/" ^ (string_of_int num) ^ ".trs")

let road num = load_s num |>
  fun x -> (let rs =Step.reduce !Ref.k x in print_rules rs; rs)
(***********************************)
let x = V "x";;
let y = V "y";;
let z = V "z";;

let a = F ("a",[]);;
let b = F ("b",[]);;
let c = F ("c",[]);;
let d = F ("d",[]);;

let f ts = F ("f",ts);;
let g ts = F ("g",ts);;
let h ts = F ("h",ts);;

let s x = F ("s",[x])
let (+:) x y = F ("+",[x;y])
let (-:) x y = F ("-",[x;y])
(***********************************)
let trs = [
  a,b;
  b,c
];;

let rs1 = [a,c; b,c]
let rs2 = [a,b]

let () = Ref.flag_on ()
let () = Ref.print_flags ()
let () = Step.cache_off ()
let () = print_endline "Step.cache_off ()"
let () = Join.cache_off ()
let () = print_endline "Join.cache_off ()"
let () = Join.light_off ()
let () = print_endline "Join.light_off ()"
