|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file:
-- http://angg.twu.net/LUA/SynTreeV1.lua.html
-- http://angg.twu.net/LUA/SynTreeV1.lua
-- (find-angg "LUA/SynTreeV1.lua")
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
--
-- (defun r () (interactive) (find-angg "LUA/Rect.lua"))
-- «.flipbook» (to "flipbook")
require "Rect" -- (find-angg "LUA/Rect.lua")
-- (find-angg "LUA/Rect.lua" "SynTree")
SynTreeV = Class {
type = "SynTreeV",
from = function (A) return deepcopymt(A, SynTreeV) end,
tabletorect = function (o)
local op = o[0]
if type(op) == "number" then op = tostring(op) end
if #o == 0 then return Rect.new(op or ".") end
local o1r,o1v = SynTreeV.torectv(o[1])
local r = o1r:syn1(op, o1v)
for i=2,#o do
local oir,oiv = SynTreeV.torectv(o[i])
r = r:synconcat(oir, oiv)
end
return r
end,
torect = function (o) return (SynTreeV.torectv(o)) end,
torectv = function (o)
if type(o) == "number" then return Rect.new(o) end
if type(o) == "string" then return Rect.new(o) end
if type(o) == "table" then
if o[0] == "S" then
return SynTreeV.torect(o[1]), (SynTreeV.S or "S")
end
return SynTreeV.tabletorect(o)
end
end,
__tostring = function (o) return o:torect():tostring() end,
__index = {
torect = function (o)
return SynTreeV.torect(o)
end,
},
}
draw = SynTreeV.from
draw = function (o)
print()
local st = SynTreeV.from(o)
print((tostring(st):gsub("S", "∎")))
print()
end
eq = function (a, b) return {[0]="=", a, b} end
mul = function (a, b) return {[0]="*", a, b} end
app = function (f, arg) return {[0]=f, arg} end
f = function (arg) return app("f", arg) end
fp = function (arg) return app("f'", arg) end
g = function (arg) return app("g", arg) end
gp = function (arg) return app("g'", arg) end
tan = function (arg) return app("tan", arg) end
int = function (f, x, a, b) return {[0]="int", f, x, a, b} end
S = function (a) return {[0]="S", a} end
x,u,a,b = "x","u","a","b"
intl = int(mul(fp(g(x)),gp(x)),x,a,b)
intr = int(fp(u),u,g(a),g(b))
MV2 = eq(intl,intr)
S0 = function (a) return {S(a)} end
-- «flipbook» (to ".flipbook")
--[[
* (defun syntree-up () (interactive) (search-backward ">>") (eek "M-6 C-l"))
* (defun syntree-down () (interactive) (search-forward ">>") (eek "M-6 C-l"))
* (define-key eev-mode-map (kbd "<M-up>") 'syntree-up)
* (define-key eev-mode-map (kbd "<M-down>") 'syntree-down)
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "SynTreeV1.lua"
-- Situação inicial:
-- ((integral em x) =
-- (integral em u) )[S1] = ?
--
= draw( S0( eq( int(mul(fp(g(x)),gp(x)),x,a,b),
int(fp(u),u,g(a),g(b)) )))
-- Regra implícita pro "=":
-- (expr1 = expr2 )[S1] =
-- (expr1[S1] = expr2[S1])
--
= draw( eq( S(int(mul(fp(g(x)),gp(x)),x,a,b)),
S(int(fp(u),u,g(a),g(b))) ))
-- Regra implícita pra integral:
-- (int(expr1 , expr2, expr3, expr4 )[S1] =
-- (int(expr1[S1], expr2[S1], expr3[S1], expr4[S1])
--
= draw( eq( int(S(mul(fp(g(x)),gp(x))),S(x),S(a),S(b)),
int(S(fp(u)),S(u),S(g(a)),S(g(b))) ))
-- Regra implícita pro "*":
-- (expr1 * expr2 )[S1] =
-- (expr1[S1] * expr2[S1])
--
= draw( eq( int(mul(S(fp(g(x))),S(gp(x))),S(x),S(a),S(b)),
int(S(fp(u)),S(u),S(g(a)),S(g(b))) ))
-- Regra explícita pro f'(expr):
-- (f'(expr1))[S1] =
-- (tan(expr1[S1]))
--
= draw( eq( int(mul(tan(S(g(x))),S(gp(x))),S(x),S(a),S(b)),
int(tan(S(u)),S(u),S(g(a)),S(g(b))) ))
-- Regra explícita pro g(expr):
-- ( g(expr1) )[S1] =
-- (2[S1] * expr1[S1])
--
= draw( eq( int(mul(tan(mul(S(2),S(x))),S(gp(x))),S(x),S(a),S(b)),
int(tan(S(u)),S(u),mul(S(2),S(a)),mul(S(2),S(b))) ))
-- Regra explícita pro 2:
-- 2[S1] =
-- 2
--
= draw( eq( int(mul(tan(mul( 2 ,S(x))),S(gp(x))),S(x),S(a),S(b)),
int(tan(S(u)),S(u),mul( 2 ,S(a)),mul( 2 ,S(b))) ))
-- Regra explícita pro a:
-- a[S1] =
-- 3
--
= draw( eq( int(mul(tan(mul( 2 ,S(x))),S(gp(x))),S(x), 3 ,S(b)),
int(tan(S(u)),S(u),mul( 2 , 3 ),mul( 2 ,S(b))) ))
-- Regra explícita pro b:
-- b[S1] =
-- 4
--
= draw( eq( int(mul(tan(mul( 2 ,S(x))),S(gp(x))),S(x), 3 , 4 ),
int(tan(S(u)),S(u),mul( 2 , 3 ),mul( 2 , 4 )) ))
-- Regra explícita pro g'(expr):
-- (g'(expr1))[S1] =
-- 2
--
= draw( eq( int(mul(tan(mul( 2 ,S(x))), 2), S(x), 3 , 4 ),
int(tan(S(u)),S(u),mul( 2 , 3 ),mul( 2 , 4 )) ))
-- Regra implícita pro u:
-- u[S1] =
-- u
--
= draw( eq( int(mul(tan(mul( 2 ,S(x))), 2), S(x), 3 , 4 ),
int(tan( u ), u ,mul( 2 , 3 ),mul( 2 , 4 )) ))
-- Regra implícita pro x:
-- x[S1] =
-- x
--
= draw( eq( int(mul(tan(mul( 2 , x )), 2), x , 3 , 4 ),
int(tan( u ), u ,mul( 2 , 3 ),mul( 2 , 4 )) ))
--]]
-- Local Variables:
-- coding: utf-8-unix
-- End: