Commit 566bb84e3ac629a863cbede51a400552f6d03b5d

Authored by Francisco Coelho
1 parent 5bcfee4d
Exists in master

Done: asp_program

PASPProc.jl 0 → 100644
@@ -0,0 +1,106 @@ @@ -0,0 +1,106 @@
  1 +module PASPProc
  2 +
  3 +include("../asplang/ASPLang.jl")
  4 +using ASPLang
  5 +
  6 +export tree_string,
  7 + filter_tree,
  8 + filter_children,
  9 + has_child,
  10 + node_findreplace,
  11 + has_annotation_P,
  12 + repl_annotation_disjunction,
  13 + derived
  14 +
  15 +tree_string(node::AnonymousVariable; level=0, indent="\t") = "$(indent^level)Anonymous: $(node.args |> string)"
  16 +tree_string(node::Functor; level=0, indent="\t") = "$(indent^level)Functor: $(node.args |> string)"
  17 +tree_string(node::Annotation; level=0, indent="\t") = "$(indent^level)Annotation: $(node.args |> string)"
  18 +tree_string(node::Variable; level=0, indent="\t") = "$(indent^level)Variable: $(node.args |> string)"
  19 +tree_string(node::StringConstant; level=0, indent="\t") = "$(indent^level)String: $(node.args |> string)"
  20 +tree_string(node::SymbolicConstant; level=0, indent="\t") = "$(indent^level)Symbol: $(node.args |> string)"
  21 +tree_string(node::NumberConstant; level=0, indent="\t") = "$(indent^level)Number: $(node.args |> string)"
  22 +#tree_print(node::Terminal; level=0, indent="\t") = node |> typeof |> string
  23 +function tree_string(node::ASPLang.NonTerminal; level=0, indent="\t")
  24 + node_head = node |> typeof |> string
  25 + sub_results = [ "$(indent^level)$node_head" ]
  26 + if isa(node.args, AbstractArray) && length(node.args) > 0
  27 + for child in node.args
  28 + child_tree = if isa(child, ASPLang.Node)
  29 + tree_string(child, level = level + 1, indent=indent)
  30 + else
  31 + "$(indent^(level+1))$(child |> string)"
  32 + end
  33 + push!(sub_results, child_tree)
  34 + end
  35 + else
  36 + push!(sub_results, tree_string(node.args, level=level+1, indent=indent))
  37 + end
  38 + join(sub_results, "\n")
  39 +end
  40 +tree_string(node; level=0, indent="\t") = "$(indent^level)$(node |> typeof |> string):$(node |> string)"
  41 +
  42 +
  43 +function filter_tree(node::NonTerminal, prop)
  44 + results = if prop(node)
  45 + [node]
  46 + else
  47 + []
  48 + end
  49 + if isa(node.args, AbstractArray)
  50 + for d in node.args
  51 + append!(results, filter_tree(d, prop))
  52 + end
  53 + else
  54 + if prop(node.args)
  55 + push!(results, node.args)
  56 + end
  57 + end
  58 + results
  59 +end
  60 +
  61 +function filter_children(node::NonTerminal, prop)
  62 + if isa(node.args, AbstractArray)
  63 + filter(prop, node.args)
  64 + else
  65 + if prop(node.args)
  66 + node.args
  67 + else
  68 + nothing
  69 + end
  70 + end
  71 +end
  72 +
  73 +function has_child(prop)
  74 + node::NonTerminal -> any(prop, node.args)
  75 +end
  76 +
  77 +function node_findreplace(node::NonTerminal, prop, action)
  78 + if prop(node)
  79 + action(node)
  80 + elseif isa(node.args, AbstractArray)
  81 + new_args = []
  82 + for arg in node.args
  83 + push!(new_args, node_findreplace(arg, prop, action))
  84 + end
  85 + typeof(node)(new_args)
  86 + else
  87 + node
  88 + end
  89 +end
  90 +
  91 +has_annotation_P = n -> has_child(isa(n, ASPLang.Annotation))
  92 +function repl_annotation_disjunction(n::NonTerminal)
  93 + a = [xi for xi in n.args if !isa(xi, Annotation)][1]
  94 + Head(
  95 + Disjunction(
  96 + [a, Negated(a)]
  97 + ))
  98 +end
  99 +
  100 +function derived(p::ASPLang.Program)
  101 + node_findreplace(p,
  102 + has_annotation_P,
  103 + repl_annotation_disjunction)
  104 +end
  105 +
  106 +end # PASPproc
0 \ No newline at end of file 107 \ No newline at end of file
drafts.jl
@@ -1,67 +0,0 @@ @@ -1,67 +0,0 @@
1 -using Symbolics  
2 -using Latexify  
3 -  
4 -# # γ = 0.5  
5 -# no_s = [  
6 -# 0 ,  
7 -# 23 ,  
8 -# 614 ,  
9 -# 165 ,  
10 -# 169 ,  
11 -# 0 ,  
12 -# 0 ,  
13 -# 4 ,  
14 -# 25 ,  
15 -# ]  
16 -  
17 -# γ = 0.8  
18 -no_s = [  
19 - 0 ,  
20 - 28 ,  
21 - 632 ,  
22 - 246 ,  
23 - 59 ,  
24 - 0 ,  
25 - 0 ,  
26 - 5 ,  
27 - 27 ,  
28 -]  
29 -pr_s = (x -> x // 1000).(no_s)  
30 -  
31 -@variables θ  
32 -num_e = [  
33 - 0 ,  
34 - 0 ,  
35 - 7 ,  
36 - 3 * θ ,  
37 - 3 * (1 - θ) ,  
38 - 0 ,  
39 - 0 ,  
40 - 3 ,  
41 - 10 ,  
42 -]  
43 -pr_e = (x -> x // 23).(num_e)  
44 -  
45 -target = expand(sum( (x -> x^2).(pr_s - pr_e) ))  
46 -println(latexify(target))  
47 -  
48 -# using Plots  
49 -# g(t) = (20869963/66125000) + (477/52900)*t + (18/529)*(t^2)  
50 -# t = 0:0.1:1  
51 -# plot(t, g.(t))  
52 -  
53 -  
54 -  
55 -function solve2(a, b, c)  
56 - delta = sqrt(Complex(b^2 - 4 * a * c))  
57 - return ( (-b - delta)/(2*a), (-b + delta)/(2*a) )  
58 -end  
59 -  
60 -# # g = target ~ 0  
61 -  
62 -a = float(18//529)  
63 -b = -float(21903//264500)  
64 -c = float(188207311//529000000)  
65 -  
66 -println("a: $a b: $b c: $c")  
67 -println("̂θ = $(-b/a)")  
drafts_PASPProc.jl 0 → 100644
@@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
  1 +include("../asplang/ASPLang.jl")
  2 +include("PASPProc.jl")
  3 +
  4 +using .ASPLang
  5 +using .PASPProc
  6 +
  7 +
  8 +root_path = "/home/fc/sci/projetos/zugzwang/code/asplang"
  9 +asp_file = "sbf.lp"
  10 +src = read("$(root_path)/$(asp_file)", String)
  11 +
  12 +println(methods(tree_string))
  13 +# e = parse_asp(src, asp_grammar)
  14 +# println(isa(e, NonTerminal))
  15 +# t = tree_string(e)
  16 +# println(t)
0 \ No newline at end of file 17 \ No newline at end of file
symb-ltxify--drafts.jl 0 → 100644
@@ -0,0 +1,67 @@ @@ -0,0 +1,67 @@
  1 +using Symbolics
  2 +using Latexify
  3 +
  4 +# # γ = 0.5
  5 +# no_s = [
  6 +# 0 ,
  7 +# 23 ,
  8 +# 614 ,
  9 +# 165 ,
  10 +# 169 ,
  11 +# 0 ,
  12 +# 0 ,
  13 +# 4 ,
  14 +# 25 ,
  15 +# ]
  16 +
  17 +# γ = 0.8
  18 +no_s = [
  19 + 0 ,
  20 + 28 ,
  21 + 632 ,
  22 + 246 ,
  23 + 59 ,
  24 + 0 ,
  25 + 0 ,
  26 + 5 ,
  27 + 27 ,
  28 +]
  29 +pr_s = (x -> x // 1000).(no_s)
  30 +
  31 +@variables θ
  32 +num_e = [
  33 + 0 ,
  34 + 0 ,
  35 + 7 ,
  36 + 3 * θ ,
  37 + 3 * (1 - θ) ,
  38 + 0 ,
  39 + 0 ,
  40 + 3 ,
  41 + 10 ,
  42 +]
  43 +pr_e = (x -> x // 23).(num_e)
  44 +
  45 +target = expand(sum( (x -> x^2).(pr_s - pr_e) ))
  46 +println(latexify(target))
  47 +
  48 +# using Plots
  49 +# g(t) = (20869963/66125000) + (477/52900)*t + (18/529)*(t^2)
  50 +# t = 0:0.1:1
  51 +# plot(t, g.(t))
  52 +
  53 +
  54 +
  55 +function solve2(a, b, c)
  56 + delta = sqrt(Complex(b^2 - 4 * a * c))
  57 + return ( (-b - delta)/(2*a), (-b + delta)/(2*a) )
  58 +end
  59 +
  60 +# # g = target ~ 0
  61 +
  62 +a = float(18//529)
  63 +b = -float(21903//264500)
  64 +c = float(188207311//529000000)
  65 +
  66 +println("a: $a b: $b c: $c")
  67 +println("̂θ = $(-b/a)")