Coverage report: /home/runner/work/geb/geb/src/generics/generics.lisp

KindCoveredAll%
expression013 0.0
branch00nil
Key
Not instrumented
Conditionalized out
Executed
Not executed
 
Both branches taken
One branch taken
Neither branch taken
1
 (in-package :geb.generics)
2
 
3
 (defgeneric gapply (morphism object)
4
   (:documentation "Applies a given Moprhism to a given object.
5
 
6
 This is practically a naive interpreter for any category found
7
 throughout the codebase.
8
 
9
 Some example usages of GAPPLY are.
10
 
11
 ```lisp
12
 GEB> (gapply (comp
13
               (mcase geb-bool:true
14
                      geb-bool:not)
15
               (->right so1 geb-bool:bool))
16
              (left so1))
17
 (right s-1)
18
 GEB> (gapply (comp
19
               (mcase geb-bool:true
20
                      geb-bool:not)
21
               (->right so1 geb-bool:bool))
22
              (right so1))
23
 (left s-1)
24
 ```"))
25
 
26
 (defgeneric well-defp-cat (morphism)
27
   (:documentation "Given a moprhism of a category, checks that
28
 it is well-defined. E.g. that composition of morphism is
29
 well-defined by checking that the domain of MCAR corresponds
30
 to the codomain of MCADR"))
31
 
32
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
33
 ;; Object Functions
34
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
35
 
36
 
37
 (defgeneric maybe (object)
38
   (:documentation
39
    "Wraps the given OBJECT into a Maybe monad The Maybe monad in this
40
 case is simply wrapping the term in a [coprod][geb.spec:coprod]
41
 of [so1][geb.spec:so1]"))
42
 
43
 (defgeneric so-hom-obj (object1 object2)
44
   (:documentation
45
    "Takes in X and Y Geb objects and provides an internal hom-object
46
 (so-hom-obj X Y) representing a set of functions from X to Y"))
47
 
48
 (defgeneric so-eval (object1 object2)
49
   (:documentation
50
    "Takes in X and Y Geb objects and provides an evaluation morphism
51
 (prod (so-hom-obj X Y) X) -> Y"))
52
 
53
 (defgeneric width (object)
54
   (:documentation
55
    "Given an OBJECT of Geb presents it as a SeqN object. That is,
56
 width corresponds the object part of the to-seqn functor."))
57
 
58
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
59
 ;; Conversion functions
60
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
61
 
62
 (defgeneric to-bitc (morphism)
63
   (:documentation
64
    "Turns a given MORPHISM into a [GEB.BITC.SPEC:BITC]"))
65
 
66
 (defgeneric to-poly (morphism)
67
   (:documentation
68
    "Turns a given MORPHISM into a [GEB.POLY.SPEC:POLY]"))
69
 
70
 (defgeneric to-seqn (morphism)
71
   (:documentation
72
    "Turns a given MORPHISM into a [GEB.SEQN.SPEC:SEQN]"))
73
 
74
 (defgeneric to-circuit (morphism name)
75
   (:documentation
76
    "Turns a MORPHISM into a Vampir circuit. the NAME is the given name of
77
 the output circuit."))
78
 
79
 (defgeneric to-vampir (morphism values constraints)
80
   (:documentation
81
    "Turns a MORPHISM into a Vampir circuit, with concrete values.
82
 
83
 The more natural interface is [TO-CIRCUIT], however this is a more low
84
 level interface into what the polynomial categories actually
85
 implement, and thus can be extended or changed.
86
 
87
 The VALUES are likely vampir values in a list.
88
 
89
 The CONSTRAINTS represent constraints that get creating"))
90
 
91
 (defgeneric to-cat (context term)
92
   (:documentation
93
    "Turns a MORPHISM with a context into Geb's Core category"))