Trình khám phá miền trừu tượng
Kỹ năng chọn miền trừu tượng (interval, sign, congruence, octagon, polyhedra) để suy luận tĩnh khoảng giá trị biến và bất biến vòng lặp mà không cần chạy code.
Lập trìnhNâng cao★ 142⑂ 14Điểm AI 9/10Cập nhật lần cuối: 22 thg 2, 2026
Làm được gì
Dùng lý thuyết diễn giải trừu tượng (abstract interpretation) để phân tích tĩnh chương trình: suy ra miền giá trị của biến, quan hệ giữa các biến và bất biến vòng lặp.
- Hướng dẫn chọn miền: bảng so sánh độ chính xác/chi phí của Sign, Interval, Congruence, Octagon, Polyhedra và Reduced Product.
- Quy trình 6 bước: chọn miền → khởi tạo trạng thái trừu tượng → áp dụng hàm chuyển (gán, điều kiện, join) → widening (∇) cho vòng lặp để đảm bảo dừng → narrowing (△) để tinh chỉnh → trích xuất bất biến.
- Kiểm tra an toàn: phát hiện nguy cơ chia cho 0, truy cập mảng ngoài biên dựa trên xấp xỉ.
- Nêu rõ giới hạn: không được coi giá trị xấp xỉ là chính xác, phải nói rõ miền đã chọn không biểu diễn được gì (ví dụ octagon không biểu diễn y = 2x).
Phù hợp với ai
- Người học/nghiên cứu phân tích tĩnh, kiểm chứng hình thức, tối ưu hóa trình biên dịch.
- Lập trình viên cần lập luận rõ ràng về khoảng giá trị biến và bất biến vòng lặp khi review code.
- Sinh viên làm bài tập môn Program Analysis muốn xem từng bước tính điểm bất động.
Ví dụ sử dụng
- Với
int x=0; while(x<10){x++; y--;}, miền interval chox ∈ [0,9]trong vòng lặp vàx=10, y=90khi thoát, đồng thời chỉ ra interval không nắm đượcx+y=100. - Với
y = x*x; z = 100/y;, miền sign suy ray ≥ 0và cảnh báo khả năng chia cho 0 khix = 0. - Với vòng lặp lồng nhau, miền octagon rút ra bất biến quan hệ
j ≤ i; còn quan hệ tuyến tính phức tạp nhưz = 3xthì cần chuyển sang polyhedra.
· · · Hướng dẫn cài đặt · · ·
Dùng thử ngay, không cần cài
Dán đoạn dưới vào Claude là dùng được skill này mà không cần cài đặt.
Hãy đọc hướng dẫn trong tệp này và làm theo để giúp mình: https://raw.githubusercontent.com/ArabelaTso/Skills-4-SE/HEAD/skills/abstract-domain-explorer/SKILL.md Mình muốn: (viết việc bạn cần ở đây)
Nếu Claude không mở được liên kết, hãy mở liên kết và copy nội dung vào rồi dán.
↓ Thấy hữu ích thì tải ZIP bên dưới và cài. Sau đó skill tự chạy, không phải dán lại mỗi lần.
Cài vào ứng dụng Claude (không cần terminal)
- Tải tệp ZIP bằng nút bên dưới.
- Trong Claude, mở Settings → Capabilities và bật 'Code execution and file creation'. (chỉ một lần)
- Vào Customize → Skills → + → 'Upload a skill' rồi tải tệp ZIP lên.
Cài vào Claude Code
Để Claude làm — dán câu dưới đây vào Claude Code
Hãy cài skill mình tìm thấy trên Claude Skill Mart. Copy thư mục skills/abstract-domain-explorer từ repo GitHub ArabelaTso/Skills-4-SE vào ~/.claude/skills/abstract-domain-explorer/ của mình. Sau khi cài xong, cho mình biết skill này làm được gì trong một câu.
Cài bằng lệnh thủ công
git clone https://github.com/ArabelaTso/Skills-4-SE.git && mkdir -p ~/.claude/skills && cp -r Skills-4-SE/skills/abstract-domain-explorer ~/.claude/skills/⚠ Đây là skill do người khác tạo. Hãy kiểm tra repo gốc trước khi cài.
- Mở terminal.
- Tải repo:
git clone https://github.com/ArabelaTso/Skills-4-SE.git - Tạo thư mục skills:
mkdir -p ~/.claude/skills - Sao chép kỹ năng:
cp -r Skills-4-SE/skills/abstract-domain-explorer ~/.claude/skills/ - Kiểm tra tài liệu tham khảo
references/abstract_domains.mdđã được copy kèm. - Khởi động lại Claude Code và yêu cầu ví dụ: "Suy luận bất biến của vòng lặp này bằng abstract interpretation".
Xem mã nguồn trên GitHub ↗Giấy phép: Apache-2.0