~ubuntu-branches/ubuntu/wily/coq-doc/wily

« back to all changes in this revision

Viewing changes to proofs/proof_type.ml

  • Committer: Bazaar Package Importer
  • Author(s): Stéphane Glondu, Stéphane Glondu, Samuel Mimram
  • Date: 2010-01-07 22:50:39 UTC
  • mfrom: (1.2.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20100107225039-n3cq82589u0qt0s2
Tags: 8.2pl1-1
[ Stéphane Glondu ]
* New upstream release (Closes: #563669)
  - remove patches
* Packaging overhaul:
  - use git, advertise it in Vcs-* fields of debian/control
  - use debhelper 7 and dh with override
  - use source format 3.0 (quilt)
* debian/control:
  - set Maintainer to d-o-m, set Uploaders to Sam and myself
  - add Homepage field
  - bump Standards-Version to 3.8.3
* Register PDF documentation into doc-base
* Add debian/watch
* Update debian/copyright

[ Samuel Mimram ]
* Change coq-doc's description to mention that it provides documentation in
  pdf format, not postscript, closes: #543545.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
(************************************************************************)
 
2
(*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
 
3
(* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *)
 
4
(*   \VV/  **************************************************************)
 
5
(*    //   *      This file is distributed under the terms of the       *)
 
6
(*         *       GNU Lesser General Public License Version 2.1        *)
 
7
(************************************************************************)
 
8
 
 
9
(*i $Id: proof_type.ml 12168 2009-06-06 21:34:37Z herbelin $ *)
 
10
 
 
11
(*i*)
 
12
open Environ
 
13
open Evd
 
14
open Names
 
15
open Libnames
 
16
open Term
 
17
open Util
 
18
open Tacexpr
 
19
open Decl_expr
 
20
open Rawterm
 
21
open Genarg
 
22
open Nametab
 
23
open Pattern
 
24
(*i*)
 
25
 
 
26
(* This module defines the structure of proof tree and the tactic type. So, it
 
27
   is used by Proof_tree and Refiner *)
 
28
 
 
29
type prim_rule =
 
30
  | Intro of identifier
 
31
  | Cut of bool * bool * identifier * types
 
32
  | FixRule of identifier * int * (identifier * int * constr) list * int
 
33
  | Cofix of identifier * (identifier * constr) list * int
 
34
  | Refine of constr
 
35
  | Convert_concl of types * cast_kind
 
36
  | Convert_hyp of named_declaration
 
37
  | Thin of identifier list
 
38
  | ThinBody of identifier list
 
39
  | Move of bool * identifier * identifier move_location
 
40
  | Order of identifier list
 
41
  | Rename of identifier * identifier
 
42
  | Change_evars
 
43
 
 
44
type proof_tree = {
 
45
  open_subgoals : int;
 
46
  goal : goal;
 
47
  ref : (rule * proof_tree list) option }
 
48
 
 
49
and rule =
 
50
  | Prim of prim_rule
 
51
  | Nested of compound_rule * proof_tree 
 
52
  | Decl_proof of bool
 
53
  | Daimon
 
54
 
 
55
and compound_rule=  
 
56
  | Tactic of tactic_expr * bool
 
57
  | Proof_instr of bool*proof_instr (* the boolean is for focus restrictions *)
 
58
 
 
59
and goal = evar_info
 
60
 
 
61
and tactic = goal sigma -> (goal list sigma * validation)
 
62
 
 
63
and validation = (proof_tree list -> proof_tree)
 
64
 
 
65
and tactic_expr =
 
66
  (open_constr,
 
67
   constr_pattern,
 
68
   evaluable_global_reference,
 
69
   inductive,
 
70
   ltac_constant,
 
71
   identifier,
 
72
   glob_tactic_expr)
 
73
     Tacexpr.gen_tactic_expr
 
74
 
 
75
and atomic_tactic_expr =
 
76
  (open_constr,
 
77
   constr_pattern,
 
78
   evaluable_global_reference,
 
79
   inductive,
 
80
   ltac_constant,
 
81
   identifier,
 
82
   glob_tactic_expr)
 
83
     Tacexpr.gen_atomic_tactic_expr
 
84
 
 
85
and tactic_arg =
 
86
  (open_constr,
 
87
   constr_pattern,
 
88
   evaluable_global_reference,
 
89
   inductive,
 
90
   ltac_constant,
 
91
   identifier,
 
92
   glob_tactic_expr)
 
93
     Tacexpr.gen_tactic_arg
 
94
 
 
95
type hyp_location = identifier Tacexpr.raw_hyp_location
 
96
 
 
97
type ltac_call_kind = 
 
98
  | LtacNotationCall of string
 
99
  | LtacNameCall of ltac_constant
 
100
  | LtacAtomCall of glob_atomic_tactic_expr * atomic_tactic_expr option ref
 
101
  | LtacVarCall of identifier * glob_tactic_expr
 
102
  | LtacConstrInterp of rawconstr *
 
103
      ((identifier * constr) list * (identifier * identifier option) list)
 
104
 
 
105
type ltac_trace = (loc * ltac_call_kind) list
 
106
 
 
107
exception LtacLocated of (ltac_call_kind * ltac_trace * loc) * exn
 
108
 
 
109
let abstract_tactic_box = ref (ref None)