0

I am trying to read the code of HOL-Hoare and I have trouble understanding the functionalities of many functions in hoare_tac.ML and hoare_syntax.ML. For instance, in

fun mk_abstupleC [] body = absfree ("x", HOLogic.unitT) body
  | mk_abstupleC [v] body = absfree (dest_Free v) body
  | mk_abstupleC (v :: w) body =
      let
        val (x, T) = dest_Free v;
        val z = mk_abstupleC w body;
        val T2 =
          (case z of
            Abs (_, T, _) => T
          | Const (_, Type (_, [_, Type (_, [T, _])])) $ _ => T);
      in
        Const (\<^const_name>‹case_prod›,
            (T --> T2 --> HOLogic.boolT) --> HOLogic.mk_prodT (T, T2) --> HOLogic.boolT) $
          absfree (x, T) z
      end;

I can't understand the functionality of absfree and dest_Free and I have to make some tests to get their meanings. I have found some functionality description in The Isabelle/Isar Reference Manual and implementation, but not all functions are found. So My question is how to search functions conveniently?

Huan Sun
  • 147
  • 6

0 Answers0